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自动生成月历代码
Oct 09 PHP
php中通过smtp发邮件的类,测试通过
Jan 22 PHP
ExtJS与PHP、MySQL实现存储的方法
Apr 02 PHP
php 各种应用乱码问题的解决方法
May 09 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
PHP中数组合并的两种方法及区别介绍
Sep 14 PHP
PHP实现冒泡排序的简单实例
May 26 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
微信公众号开发客服接口实例代码
Oct 21 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
May 06 PHP
Yii 框架控制器创建使用及控制器响应操作示例
Oct 14 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
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
PHP函数之error_reporting(E_ALL ^ E_NOTICE)详细说明
2011/07/01 PHP
使用PHP实现生成HTML静态页面
2015/11/18 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
JS判断不同分辨率调用不同的CSS样式文件实现思路及测试代码
2013/01/23 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
js中把JSON字符串转换成JSON对象最好的方法
2014/03/21 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
2014/03/28 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
JavaScript实现复制文章自动添加版权
2016/08/02 Javascript
微信小程序  Mustache语法详细介绍
2016/10/27 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
用nodejs搭建websocket服务器
2017/01/23 NodeJs
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
关于vue的语法规则检测报错问题的解决
2018/05/21 Javascript
浅析Vue项目中使用keep-Alive步骤
2018/07/27 Javascript
Vue实例的对象参数options的几个常用选项详解
2019/11/08 Javascript
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
Python简单获取二维数组行列数的方法示例
2018/12/21 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
opencv python如何实现图像二值化
2020/02/03 Python
PyTorch中Tensor的数据统计示例
2020/02/17 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
外贸实习生自荐信范文
2013/11/24 职场文书
学校门卫工作职责
2013/12/07 职场文书
大学毕业感言50字
2014/02/07 职场文书
财政专业求职信范文
2014/02/19 职场文书
2014年庆祝国庆65周年演讲稿
2014/09/21 职场文书
债务纠纷委托书范本
2014/10/14 职场文书
2015年化验室工作总结
2015/04/23 职场文书
春风化雨观后感
2015/06/11 职场文书