Yii框架实现多数据库配置和操作的方法


Posted in PHP onMay 25, 2017

本文实例讲述了Yii框架实现多数据库配置和操作的方法。分享给大家供大家参考,具体如下:

Yii的默认配置为一个数据库,不过可以很容易的支持多个数据库的操作,

这为按业务分割数据库提供了基础设施。如下所示:

//cms DB connection
'db' => (defined('DB_CONNECTION') ? array(
  'connectionString' => DB_CONNECTION,
  'username' => DB_USER,
  'password' => DB_PWD,
  'charset' => 'utf8',
  'emulatePrepare' => true,
  'enableParamLogging' => true,
  'schemaCachingDuration' => 3600, //cache table schema
    ) : array()),
//member DB connection
'db_member' => (defined('DB_CONNECTION_MEMBER') ? array(
  'class'=> 'CDbConnection' ,
  'connectionString' => DB_CONNECTION_MEMBER,
  'username' => DB_USER_MEMBER,
  'password' => DB_PWD_MEMBER,
  'charset' => 'utf8',
  'emulatePrepare' => true,
  'enableParamLogging' => true,
  'schemaCachingDuration' => 3600, //cache table schema
    ) : array()),

然后在模型中重载getDbConnection函数,比如:

class Point extends CActiveRecord {
  public function getDbConnection() {
     return Yii::app()->db_member;
  }
  ...
}

如果有很多模型会使用db_member, 可以从CActiveRecord派生一个子类:CMemberActiveRecord, 把getDbConnection的重写放在该AR的子类中。

然后模型都从该CMemberActiveRecord中派生。

多数据库配置遇到的一个典型的错误是:

Object configuration must be an array containing a class element

原因是配置中非$db的其他数据库没有设置class属性,添加该属性并设置其值为CDbConnection即可。

参考链接:

http://yiihaa.com/models-and-multiple-database-connections

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

PHP 相关文章推荐
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
PHP利用str_replace防注入的方法
Nov 10 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
PHP中实现生成静态文件的方法缓解服务器压力
Jan 07 PHP
利用php下载xls文件(自己动手写的)
Apr 18 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
Nov 18 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
php简单实现发送带附件的邮件
Jun 10 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
在php7中MongoDB实现模糊查询的方法详解
May 03 PHP
PHP手机号中间四位用星号*代替显示的实例
Jun 02 PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 #PHP
[原创]php正则删除html代码中class样式属性的方法
May 24 #PHP
PHP 年月日的三级联动实例代码
May 24 #PHP
php验证码生成器
May 24 #PHP
php批量修改表结构实例
May 24 #PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 #PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 #PHP
You might like
PHP+DBM的同学录程序(4)
2006/10/09 PHP
很实用的一个完整email发送程序
2006/10/09 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
vue.js指令v-for使用及索引获取
2016/11/03 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
python抓取网页中图片并保存到本地
2015/12/01 Python
Python贪心算法实例小结
2018/04/22 Python
对dataframe进行列相加,行相加的实例
2018/06/08 Python
Python变量访问权限控制详解
2019/06/29 Python
python生成器用法实例详解
2019/11/22 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
中专毕业自我鉴定
2013/10/16 职场文书
简短的公司员工自我评价分享
2013/11/13 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
学生检讨书怎么写
2015/05/07 职场文书
鲁冰花观后感
2015/06/10 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
带你了解CSS基础知识,样式
2021/07/21 HTML / CSS
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL