需求:原网站功能庞大,数据库服务器与数据库众多,有部分数据单表已经无法满足我们的需求。我们便有了分表的需求
问题:YII单表方式已经满足不了我们的需求,急切需要对YII进行扩展设计,支持数据库分表设计
解决方法:1、新建protected/sinashowExt/JActiveRecord.php文件
- class JUnicomActiveRecord extends Ar
- {
- public $dbname = 'unicom1';
- public $userIdKey = 'user_id';
- protected $_userId;
- /**
- * 获得DBConnenction(non-PHPdoc)
- * @see CActiveRecord::getDbConnection()
- */
- public function getDbConnection()
- {
- if ($this->hasProperty($this->userIdKey))
- {
- $this->dbname = $this->chooseDb($this->{$this->userIdKey});
- }
- elseif ($this->_userId)
- {
- $this->dbname = $this->chooseDb($this->_userId);
- }
- return parent::getDbConnection();
- }
- /**
- * 选择数据库
- */
- public function chooseDb($userId)
- {
- $unicom = 'unicom2';
- $userId = (float)$userId;
- switch ($userId)
- {
- case $userId >= 10000 && $userId <= 29999999:
- $unicom = 'unicom1';
- break;
- case $userId >= 30000000 && $userId <= 39999999:
- $unicom = 'unicom2';
- break;
- case $userId >= 40000000 && $userId <= 49999999:
- $unicom = 'unicom3';
- break;
- case $userId >= 50000000 && $userId <= 59999999:
- $unicom = 'unicom4';
- break;
- case $userId >= 60000000 && $userId <= 69999999:
- $unicom = 'unicom5';
- break;
- case $userId >= 70000000 && $userId <= 89999999:
- $unicom = 'unicom6';
- break;
- case $userId >= 210000000 && $userId <= 239999999:
- $unicom = 'unicom7';
- break;
- case $userId >= 240000000 && $userId <= 269999999:
- $unicom = 'unicom8';
- break;
- case $userId >= 270000000 && $userId <= 299999999:
- $unicom = 'unicom27';
- break;
- case $userId >= 1000000000 && ($userId % 2) == 0:
- $unicom = 'unicom9';
- break;
- case $userId >= 1000000000 && ($userId % 2) == 1:
- $unicom = 'unicom10';
- break;
- }
- return $unicom;
- }
- /**
- * 设置用户ID
- *
- * @param int $user_id
- */
- public function setUserId($user_id)
- {
- $this->_userId = $user_id;
- return $this;
- }
- }
.2、为了兼容以前的程序。我们重写protected/component/Ar.php文件来继承JActiveRecord类,代码如下:
- class Ar extends JActiveRecord
- {
- }
相关推荐
很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架
本书不是简单地介绍如何使用 Yii 框架,而是站在框架设计的高度,从源代码级别深 度剖析。本书首先介绍 PHP 框架技术的概念及其应用领域,然后开始仿照 Yii 框架源代码 自定义框架,其中包括了 MVC 设计模式、单入口...
yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架yii框架
据说是超越所有的PHP框架php最新框架YII框架php最新框架YII框架
Yii Yii框架 Yii框架快速入门,自己整理的很全的,很容易看懂
yii1.1中文文档 yii框架中文手册教程.pdf
yii框架教程yii框架教程yii框架教程yii框架教程yii框架教程yii框架教程
YII框架的开发中文文档,帮助哪些正在学习YII框架的同学们,
YII框架中文手册,希望帮助需要帮助的人!
Yii 框架简介 全面轻松入手Yii 从这里开始 简单 明了 言简意赅
这是yii框架修复1.1.14漏洞后的最新版本1.1.15
Yii框架快速入门,本教材适用于PHP5.3以上,PHP5.2可能会存在 细节上的差异,主要介绍Yii入门的一些基础知识和简单例子.
YII框架中文手册教程,YII框架中文,YII框架中文手册,YII框架中文教程,YII框架中文手册教程,YII框架中文,YII框架中文手册,YII框架中文
YII框架源码分析,这个比较适合深度去了解框架的原理!
YII框架简介。学习yii框架必须要掌握的基础知识。
第一次学yii框架,就简单做了一个博客系统
大家可以从任何一个gii生成model类开始代码上溯,会发现:yii2的model层基于ActiveRecord实现DAO访问数据库的能力。 而ActiveRecord的继承链可以继续上溯,最终会发现model其实是一个component,而component是yii2做...
php YII框架数据库备份模块
Yii框架中文文档,完全中文,无英文章节。排版是我和同学亲手做的,另外我还制作了一个封面。文档没有加密,可以自由打印、修改。
yii框架源码分析