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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
PHP获取一段文本显示点阵宽度和高度的方法
Mar 12 PHP
php数组生成html下拉列表的方法
Jul 20 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
ThinkPHP静态缓存简单配置和使用方法详解
Mar 23 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Dec 14 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
Laravel 验证码认证学习记录小结
Dec 20 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中动态显示签名和ip原理
2007/03/28 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
PHP代码加密的方法总结
2020/03/13 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
javascript 浏览器检测代码精简版
2010/03/04 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
不使用jquery实现js打字效果示例分享
2014/01/19 Javascript
jquery结合CSS使用validate实现漂亮的验证
2015/01/29 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
vue项目配置使用flow类型检查的步骤
2020/03/18 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
python修改FTP服务器上的文件名
2019/09/11 Python
如何现实servlet的单线程模式
2014/08/05 面试题
市场部业务员岗位职责
2014/04/02 职场文书
人事任命书格式
2014/06/05 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
Python制作春联的示例代码
2022/01/22 Python