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转成EXE文件
Oct 09 PHP
用Zend Encode编写开发PHP程序
Feb 21 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
分享最受欢迎的5款PHP框架
Nov 27 PHP
PHP实现文件上传与下载实例与总结
Mar 13 PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
Aug 29 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
Nov 10 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
Aug 15 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 PHP
PHP自动载入类文件函数__autoload的使用方法
Mar 25 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 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
joomla内置的表单验证功能使用方法
2010/06/11 PHP
推荐5款跨平台的PHP编辑器
2014/12/25 PHP
Joomla实现组件中弹出一个模式(modal)窗口的方法
2016/05/04 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
复制小说文本时出现的随机乱码的去除方法
2010/09/07 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
2019/10/12 Javascript
纯 JS 实现放大缩小拖拽功能(完整代码)
2019/11/25 Javascript
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python注释详解
2016/06/01 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
python实现单链表的方法示例
2019/09/03 Python
Python变量格式化输出实现原理解析
2020/08/06 Python
约瑟夫·特纳男装:Joseph Turner
2017/10/10 全球购物
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
医院门卫岗位职责
2013/12/30 职场文书
党员违纪检讨书
2014/02/18 职场文书
创业融资计划书
2014/04/25 职场文书
食品工程专业求职信
2014/06/15 职场文书
运动员获奖感言
2014/08/15 职场文书
小学生作文写作技巧100例,非常实用!
2019/07/08 职场文书
2019年教师节:送给所有老师的祝福语
2019/09/05 职场文书
Python中Numpy和Matplotlib的基本使用指南
2021/11/02 Python
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis