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 相关文章推荐
adodb与adodb_lite之比较
Dec 31 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
详解WordPress开发中的get_post与get_posts函数使用
Jan 04 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
PHP递归实现层级树状展开
Apr 01 PHP
提交表单后 PHP获取提交内容的实现方法
May 25 PHP
php socket通信简单实现
Nov 18 PHP
PHP获取路径和目录的方法总结【必看篇】
Mar 04 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
PDO::errorCode讲解
Jan 28 PHP
PHP html_entity_decode()函数讲解
Feb 25 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
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
几个有趣的Javascript Hack
2010/07/24 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
JavaScript中定时控制Throttle、Debounce和Immediate详解
2016/11/17 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
Vue.js 2.0窥探之Virtual DOM到底是什么?
2017/02/10 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
简单实现节流函数和防抖函数过程解析
2019/10/08 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
[03:15]DOTA2-DPC中国联赛1月22日Recap集锦
2021/03/11 DOTA
Python pandas常用函数详解
2018/02/07 Python
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
pandas.loc 选取指定列进行操作的实例
2018/05/18 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
Python操作Mongodb数据库的方法小结
2019/09/10 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
css3+伪元素实现鼠标移入时下划线向两边展开的效果
2017/04/25 HTML / CSS
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
小车司机岗位职责
2013/11/25 职场文书
高一家长会邀请函
2014/01/12 职场文书
北京奥运会主题口号
2014/06/13 职场文书
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书