`
wbj0110
  • 浏览: 1610233 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
阅读更多

需求:原网站功能庞大,数据库服务器与数据库众多,有部分数据单表已经无法满足我们的需求。我们便有了分表的需求

 

问题:YII单表方式已经满足不了我们的需求,急切需要对YII进行扩展设计,支持数据库分表设计

 

解决方法:1、新建protected/sinashowExt/JActiveRecord.php文件

 

[php] view plaincopy
 
  1. class JUnicomActiveRecord extends Ar   
  2. {  
  3.     public $dbname      = 'unicom1';  
  4.     public $userIdKey   = 'user_id';  
  5.     protected $_userId;  
  6.       
  7.     /** 
  8.      * 获得DBConnenction(non-PHPdoc) 
  9.      * @see CActiveRecord::getDbConnection() 
  10.      */  
  11.     public function getDbConnection()  
  12.     {  
  13.         if ($this->hasProperty($this->userIdKey))  
  14.         {  
  15.             $this->dbname    = $this->chooseDb($this->{$this->userIdKey});  
  16.         }  
  17.         elseif ($this->_userId)   
  18.         {  
  19.             $this->dbname    = $this->chooseDb($this->_userId);  
  20.         }  
  21.         return parent::getDbConnection();  
  22.     }  
  23.       
  24.     /** 
  25.      * 选择数据库 
  26.      */  
  27.     public function chooseDb($userId)  
  28.     {  
  29.         $unicom = 'unicom2';  
  30.         $userId = (float)$userId;  
  31.         switch ($userId)  
  32.         {  
  33.             case $userId >= 10000 && $userId <= 29999999:  
  34.                 $unicom = 'unicom1';  
  35.                 break;  
  36.             case $userId >= 30000000 && $userId <= 39999999:  
  37.                 $unicom = 'unicom2';  
  38.                 break;  
  39.             case $userId >= 40000000 && $userId <= 49999999:  
  40.                 $unicom = 'unicom3';  
  41.                 break;  
  42.             case $userId >= 50000000 && $userId <= 59999999:  
  43.                 $unicom = 'unicom4';  
  44.                 break;  
  45.             case $userId >= 60000000 && $userId <= 69999999:  
  46.                 $unicom = 'unicom5';  
  47.                 break;  
  48.             case $userId >= 70000000 && $userId <= 89999999:  
  49.                 $unicom = 'unicom6';  
  50.                 break;  
  51.             case $userId >= 210000000 && $userId <= 239999999:  
  52.                 $unicom = 'unicom7';  
  53.                 break;  
  54.             case $userId >= 240000000 && $userId <= 269999999:  
  55.                 $unicom = 'unicom8';  
  56.                 break;  
  57.             case $userId >= 270000000 && $userId <= 299999999:  
  58.                 $unicom = 'unicom27';  
  59.                 break;  
  60.             case $userId >= 1000000000 && ($userId % 2) == 0:  
  61.                 $unicom = 'unicom9';  
  62.                 break;  
  63.             case $userId >= 1000000000 && ($userId % 2) == 1:  
  64.                 $unicom = 'unicom10';  
  65.                 break;  
  66.          }  
  67.          return $unicom;  
  68.     }  
  69.       
  70.     /** 
  71.      * 设置用户ID 
  72.      * 
  73.      * @param int $user_id 
  74.      */  
  75.     public function setUserId($user_id)  
  76.     {  
  77.         $this->_userId   = $user_id;  
  78.         return $this;  
  79.     }  
  80. }  



 

.2、为了兼容以前的程序。我们重写protected/component/Ar.php文件来继承JActiveRecord类,代码如下:

 

 

[php] view plaincopy
 
  1. class Ar extends JActiveRecord  
  2. {  
  3. }  
分享到:
评论

相关推荐

    《Yii框架深度剖析》配套代码

    本书不是简单地介绍如何使用 Yii 框架,而是站在框架设计的高度,从源代码级别深 度剖析。本书首先介绍 PHP 框架技术的概念及其应用领域,然后开始仿照 Yii 框架源代码 自定义框架,其中包括了 MVC 设计模式、单入口...

    Yii框架学习手册

    Yii Yii框架 Yii框架快速入门,自己整理的很全的,很容易看懂

    php最新框架YII框架

    Yii的名字来源于"易",在汉语中意味着简单和快捷,这也体现了框架的设计理念。 一、Yii框架概述: 1. 高性能:Yii通过使用缓存机制、优化的查询构建器和预编译的模板引擎等技术,提供了比其他PHP框架更快的运行速度...

    yii框架中文文档、yii中文手册教程

    Yii框架以性能优化为设计核心,提供了一系列现代化的Web开发工具和技术,使得开发者可以快速、高效地编写高质量的代码。 在“yii1.1中文文档”中,包含了Yii 1.1版本的详尽教程和参考指南。这个版本是Yii框架的一个...

    yii框架中文手册教程

    1. 基于组件的设计:Yii框架采用组件化的设计模式,这意味着整个框架由多个可复用的组件构成,每个组件可以独立使用或配合其他组件完成特定的功能。这种设计让开发者能够灵活地组合和构建复杂的Web应用。 2. 高性能...

    yii框架yii框架yii框架yii框架yii框架

    很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架很好用yii框架

    Yii 读写分离 分表分库

    总结,通过Yii框架的灵活配置和扩展支持,我们可以实现读写分离和分库分表,有效提升系统的数据库性能。同时,需要注意在设计过程中充分考虑数据的一致性和查询的便利性,以确保系统的稳定性和可维护性。

    Yii框架执行流程及部分源码分析

    Yii框架是PHP领域的一款高效、灵活的Web应用开发框架,其设计模式基于MVC(Model-View-Controller),使得开发者可以快速构建复杂而稳定的Web应用。让我们深入了解一下Yii框架的执行流程及其部分源码分析。 1. **...

    YII框架中文手册

    Yii(读作"易")是一个高性能、基于组件的PHP框架,专为开发Web 2.0应用而设计。这个中文手册是开发者了解和掌握Yii框架的重要资源,它提供了详尽的指导,旨在帮助初学者和经验丰富的程序员更有效地利用Yii进行开发...

    Yii框架快速入门

    Yii框架是一款基于组件的高性能PHP框架,用于开发Web2.0应用。它的设计目标是高效、易用且可扩展。Yii这个名字来源于一个中文词汇“易”,意味着简单和便捷。本教程将带你逐步走进Yii的世界,了解其核心概念,以及...

    Yii框架学习笔记

    Yii框架是高效且灵活的PHP框架,专为Web 2.0应用开发而设计。自2008年1月薛强开始开发以来,Yii已经经历了多个版本迭代,从1.0.0到1.1.13,展现了其强大的生命力和适应性。与其他PHP框架如CakePHP、CodeIgniter、...

    Yii框架PDF中文文档

    ### Yii框架知识点总结 #### 一、概述与新特性 **Yii** 是一款高性能的PHP Web应用程序开发框架,以其简洁高效著称。该框架旨在帮助开发者快速构建安全且高效的Web应用。本文档根据官方中文文档及《Yii权威指南》...

    yii框架(1.1.15)

    总之,Yii 1.1.15是Yii 1.1.x系列的一个重要更新,它在保持框架易用性的同时,增强了安全性和性能,是开发者继续使用Yii框架进行项目开发的理想选择。如果你正在使用1.1.14或更早的版本,强烈推荐升级到1.1.15以获取...

    yii示例-下拉框-最新的yii框架

    在这个“yii示例-下拉框-最新的yii框架”中,我们将探讨如何在Yii2框架中实现下拉框功能。 1. **安装Yii框架** 在开始创建下拉框之前,你需要确保已经安装了最新版本的Yii框架。这通常通过Composer完成,运行`...

    yii框架下的yii_blog 博客系统

    首先,Yii框架的核心特性包括MVC(Model-View-Controller)设计模式、主动记录(ActiveRecord)模式、缓存管理、身份验证和访问控制、URL管理等。这些特性使得开发过程结构清晰,易于维护。 1. **MVC模式**:Yii的...

    Yii框架详解

    Yii框架详解 Yii,全称为“Yet Another Inevitable Framework”,是PHP开发的一款高性能的、基于组件的Web应用开发框架。Yii的设计理念是简洁、高效和可扩展,它旨在提高开发速度并降低维护成本。本篇文章将深入...

    yii 框架中文帮助文档

    YII框架的开发中文文档,帮助哪些正在学习YII框架的同学们,

    Yii框架学习笔记.pdf

    本篇学习笔记将详细介绍Yii框架的基本概念,包括请求处理流程、组件、事件与行为、错误和日志处理、国际化以及视图和控制台应用等方面。 ### 请求的处理流程 1. **项目入口脚本**:在Yii框架中,项目的入口脚本...

    yii框架商城

    Yii框架是一款基于组件的高性能PHP框架,专为Web2.0应用开发而设计。它能够帮助开发者快速构建高效、可扩展的Web应用。在“yii框架商城”项目中,我们可以看到Yii被用来构建一个电子商务平台,这样的应用通常涉及到...

Global site tag (gtag.js) - Google Analytics