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 相关文章推荐
建立文件交换功能的脚本(三)
Oct 09 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
PHP通过正则表达式下载图片到本地的实现代码
Sep 19 PHP
处理单名多值表单的详解
Jun 08 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
Jul 02 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
php更新mysql后获取改变行数的方法
Dec 25 PHP
php生成图片验证码
Jun 09 PHP
mac系统下为 php 添加 pcntl 扩展
Aug 28 PHP
Yii框架学习笔记之session与cookie简单操作示例
Apr 30 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中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
PHP7 新增常量
2021/03/09 PHP
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
jquery remove方法应用详解
2012/11/22 Javascript
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
JavaScript轻松创建级联函数的方法示例
2017/02/10 Javascript
Vue Ajax跨域请求实例详解
2017/06/20 Javascript
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
基于Node.js实现压缩和解压缩的方法
2018/02/13 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
2018/03/02 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
详解django模板与vue.js冲突问题
2019/07/07 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
JavaScript实现缓动动画
2020/11/25 Javascript
python实现类的静态变量用法实例
2015/05/08 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
自荐信格式
2013/12/01 职场文书
工程班组长岗位职责
2013/12/30 职场文书
核心价值观演讲稿
2014/05/13 职场文书
反四风对照检查材料
2014/09/22 职场文书
MongoDB balancer的使用详解
2021/04/30 MongoDB