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 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
php错误级别的设置方法
Jun 17 PHP
ini_set的用法介绍
Jan 07 PHP
php实现批量下载百度云盘文件例子分享
Apr 10 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
如何使用GDB调试PHP程序
Dec 08 PHP
PHP的中使用非缓冲模式查询数据库的方法
Feb 05 PHP
PHP使用第三方即时获取物流动态实例详解
Apr 27 PHP
PHP批量删除jQuery操作
Jul 23 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 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
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
PHP面向对象学习之parent::关键字
2017/01/18 PHP
动态加载iframe
2006/06/16 Javascript
JQuery扩展插件Validate 1 基本使用方法并打包下载
2011/09/05 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
Javascript基础教程之argument 详解
2015/01/18 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
2017/07/13 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
JavaScript惰性求值的一种实现方法示例
2019/01/11 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
vue使用vant中的checkbox实现全选功能
2020/11/17 Vue.js
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
浅谈Python采集网页时正则表达式匹配换行符的问题
2018/12/20 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
2018/12/28 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
利用python汇总统计多张Excel
2020/09/22 Python
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
如何转换一个字符串到enum值
2014/04/12 面试题
大学生年度自我鉴定
2013/10/31 职场文书
四查四看剖析材料
2014/02/14 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
MyBatis 动态SQL全面详解
2021/10/05 MySQL