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 相关文章推荐
dede3.1分页文字采集过滤规则详说(图文教程)
Apr 03 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
Nov 08 PHP
PHP Warning: Module 'modulename' already loaded in问题解决办法
Mar 16 PHP
php编写的一个E-mail验证类
Mar 25 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
Apr 30 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
php+MySQL实现登录时验证登录名和密码是否正确
May 10 PHP
Windows2003下php5.4安装配置教程(IIS)
Jun 30 PHP
php图形jpgraph操作实例分析
Feb 22 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 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自动反斜杠的函数代码
2010/01/05 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
javascript闭包入门示例
2014/04/30 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
JavaScript实现随机替换图片的方法
2015/04/16 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
微信上传视频文件提示(推荐)
2018/11/22 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
python读写ini文件示例(python读写文件)
2014/03/25 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
python实现用户答题功能
2018/01/17 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
django将数组传递给前台模板的方法
2019/08/06 Python
python为什么要安装到c盘
2020/07/20 Python
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
房地产开发计划书
2014/01/10 职场文书
劲霸男装广告词
2014/03/21 职场文书
政治表现评语
2014/05/04 职场文书
纪念九一八事变演讲稿1000字
2014/09/14 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
协议书范文
2015/01/27 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
Memcached介绍及php-memcache扩展安装
2021/04/01 PHP
Django中的JWT身份验证的实现
2021/05/07 Python