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 相关文章推荐
vBulletin Forum 2.3.xx SQL Injection
Oct 09 PHP
PHP 超链接 抓取实现代码
Jun 29 PHP
php中$this->含义分析
Nov 29 PHP
thinkphp3.0 模板中函数的使用
Nov 13 PHP
PHP判断指定时间段的2个方法
Mar 14 PHP
php实现的双向队列类实例
Sep 24 PHP
yii实现图片上传及缩略图生成的方法
Dec 04 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
Sep 30 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
PHP foreach遍历多维数组实现方式
Nov 16 PHP
PHP实现二维数组按某列进行排序的方法
Nov 18 PHP
php防止sql注入的方法详解
Feb 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语法(2)
2006/10/09 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
PHP错误处理函数
2016/04/03 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
javascript中callee与caller的用法和应用场景
2010/12/08 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
python中关于for循环的碎碎念
2017/06/30 Python
python+pyqt实现右下角弹出框
2017/10/26 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
2018/08/22 Python
基于django channel实现websocket的聊天室的方法示例
2019/04/11 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
瑞贝卡·泰勒官方网站:Rebecca Taylor
2016/09/24 全球购物
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
银行门卫岗位职责
2013/12/29 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
协议书模板
2014/04/23 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
党员剖析材料范文
2014/09/30 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS
直播实况, OMG破敌三路五十分钟大战神技局摩托车
2022/04/01 DOTA