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利用COM对象访问SQLServer、Access
Oct 09 PHP
PHP中文汉字验证码
Apr 08 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
使用openssl实现rsa非对称加密算法示例
Jan 24 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
跟我学Laravel之视图 & Response
Oct 15 PHP
PHP计算加权平均数的方法
Jul 16 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 PHP
php中pcntl_fork详解
Apr 01 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 获取当前访问的url文件名的方法小结
2010/02/08 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
JQuery中使文本框获得焦点的方法实例分析
2015/02/28 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
JS仿百度自动下拉框模糊匹配提示
2016/07/25 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
[02:22]2018DOTA2亚洲邀请赛VG赛前采访
2018/04/03 DOTA
python中 logging的使用详解
2017/10/25 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
python Pillow图像处理方法汇总
2019/10/16 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
Python 在局部变量域中执行代码
2020/08/07 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
美国设计师精美珠宝购物网:Netaya
2016/08/28 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
优秀学生干部个人的自我评价
2013/10/04 职场文书
高中军训第一天感言
2014/03/06 职场文书
药剂专业个人求职信范文
2014/04/29 职场文书
刑事上诉状(量刑过重)
2015/05/23 职场文书
论文答辩开场白大全
2015/05/27 职场文书
白银帝国观后感
2015/06/17 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
2016七夕情人节广告语
2016/01/28 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis