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的ASP防火墙
Oct 09 PHP
php5.2.0内存管理改进
Jan 22 PHP
php miniBB中文乱码问题解决方法
Nov 25 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
PHP反转字符串函数strrev()函数的用法
Feb 04 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
php daddslashes()和 saddslashes()有哪些区别分析
Oct 26 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
PHP导入导出Excel代码
Jul 07 PHP
PHP连接及操作PostgreSQL数据库的方法详解
Jan 30 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
Oct 14 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 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使用CURL伪造IP和来源实例详解
2015/01/15 PHP
php实现RSA加密类实例
2015/03/26 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
php 基础函数
2017/02/10 PHP
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
浅谈js中的变量名和函数名重名
2017/02/13 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
js如何编写简单的ajax方法库
2017/08/02 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
[00:47]TI7不朽珍藏III——沙王不朽展示
2017/07/15 DOTA
Python中实现参数类型检查的简单方法
2015/04/21 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
django框架如何集成celery进行开发
2017/05/24 Python
python模块之time模块(实例讲解)
2017/09/13 Python
python使用tensorflow保存、加载和使用模型的方法
2018/01/31 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
django-初始配置(纯手写)详解
2019/07/30 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
DTD的含义以及作用
2014/01/26 面试题
中职应届生会计求职信
2013/10/23 职场文书
讲座主持词
2014/03/20 职场文书
团队口号大全
2014/06/06 职场文书
支行行长竞聘报告
2014/11/06 职场文书
圣诞节开幕词
2015/01/29 职场文书
小学教师求职信范文
2015/03/20 职场文书
django上传文件的三种方式
2021/04/29 Python