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 相关文章推荐
使用 eAccelerator加速PHP代码的目的
Mar 16 PHP
How do I change MySQL timezone?
Mar 26 PHP
PHP执行批量mysql语句的解决方法
May 02 PHP
解析thinkphp中的M()与D()方法的区别
Jun 22 PHP
PHP 转义使用详解
Jul 15 PHP
VB中的RasEnumConnections函数返回632错误解决方法
Jul 29 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
Nov 28 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
golang 调用 php7详解及实例
Jan 04 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 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 高手之路(三)
2006/10/09 PHP
php教程之phpize使用方法
2014/02/12 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
深入解析PHP的Laravel框架中的event事件操作
2016/03/21 PHP
Yii框架中jquery表单验证插件用法示例
2016/10/18 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
thinkPHP5.0框架事务处理操作简单示例
2018/09/07 PHP
理解JavaScript中的事件
2006/09/23 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
JS简单获取当前日期和农历日期的方法
2017/04/17 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
webpack项目轻松混用css module的方法
2018/06/12 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
Python类的继承用法示例
2019/01/31 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
英国邮购活的植物主要供应商:Gardening Direct
2019/01/28 全球购物
机电专业毕业生求职信
2013/10/27 职场文书
运动会入场口号
2014/06/07 职场文书
安全横幅标语
2014/06/09 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
给老师的感谢信
2015/01/20 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
python实现简单的聊天小程序
2021/07/07 Python
基于Go语言构建RESTful API服务
2021/07/25 Golang
Java获取e.printStackTrace()打印的信息方式
2021/08/07 Java/Android
Golang 并发编程 SingleFlight模式
2022/04/26 Golang