需求:原网站功能庞大,数据库服务器与数据库众多,有部分数据单表已经无法满足我们的需求。我们便有了分表的需求
问题: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 框架,而是站在框架设计的高度,从源代码级别深 度剖析。本书首先介绍 PHP 框架技术的概念及其应用领域,然后开始仿照 Yii 框架源代码 自定义框架,其中包括了 MVC 设计模式、单入口...
Yii Yii框架 Yii框架快速入门,自己整理的很全的,很容易看懂
Yii的名字来源于"易",在汉语中意味着简单和快捷,这也体现了框架的设计理念。 一、Yii框架概述: 1. 高性能:Yii通过使用缓存机制、优化的查询构建器和预编译的模板引擎等技术,提供了比其他PHP框架更快的运行速度...
Yii框架以性能优化为设计核心,提供了一系列现代化的Web开发工具和技术,使得开发者可以快速、高效地编写高质量的代码。 在“yii1.1中文文档”中,包含了Yii 1.1版本的详尽教程和参考指南。这个版本是Yii框架的一个...
1. 基于组件的设计:Yii框架采用组件化的设计模式,这意味着整个框架由多个可复用的组件构成,每个组件可以独立使用或配合其他组件完成特定的功能。这种设计让开发者能够灵活地组合和构建复杂的Web应用。 2. 高性能...
很好用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(读作"易")是一个高性能、基于组件的PHP框架,专为开发Web 2.0应用而设计。这个中文手册是开发者了解和掌握Yii框架的重要资源,它提供了详尽的指导,旨在帮助初学者和经验丰富的程序员更有效地利用Yii进行开发...
Yii框架是一款基于组件的高性能PHP框架,用于开发Web2.0应用。它的设计目标是高效、易用且可扩展。Yii这个名字来源于一个中文词汇“易”,意味着简单和便捷。本教程将带你逐步走进Yii的世界,了解其核心概念,以及...
Yii框架是高效且灵活的PHP框架,专为Web 2.0应用开发而设计。自2008年1月薛强开始开发以来,Yii已经经历了多个版本迭代,从1.0.0到1.1.13,展现了其强大的生命力和适应性。与其他PHP框架如CakePHP、CodeIgniter、...
### Yii框架知识点总结 #### 一、概述与新特性 **Yii** 是一款高性能的PHP Web应用程序开发框架,以其简洁高效著称。该框架旨在帮助开发者快速构建安全且高效的Web应用。本文档根据官方中文文档及《Yii权威指南》...
总之,Yii 1.1.15是Yii 1.1.x系列的一个重要更新,它在保持框架易用性的同时,增强了安全性和性能,是开发者继续使用Yii框架进行项目开发的理想选择。如果你正在使用1.1.14或更早的版本,强烈推荐升级到1.1.15以获取...
在这个“yii示例-下拉框-最新的yii框架”中,我们将探讨如何在Yii2框架中实现下拉框功能。 1. **安装Yii框架** 在开始创建下拉框之前,你需要确保已经安装了最新版本的Yii框架。这通常通过Composer完成,运行`...
首先,Yii框架的核心特性包括MVC(Model-View-Controller)设计模式、主动记录(ActiveRecord)模式、缓存管理、身份验证和访问控制、URL管理等。这些特性使得开发过程结构清晰,易于维护。 1. **MVC模式**:Yii的...
Yii框架详解 Yii,全称为“Yet Another Inevitable Framework”,是PHP开发的一款高性能的、基于组件的Web应用开发框架。Yii的设计理念是简洁、高效和可扩展,它旨在提高开发速度并降低维护成本。本篇文章将深入...
YII框架的开发中文文档,帮助哪些正在学习YII框架的同学们,
本篇学习笔记将详细介绍Yii框架的基本概念,包括请求处理流程、组件、事件与行为、错误和日志处理、国际化以及视图和控制台应用等方面。 ### 请求的处理流程 1. **项目入口脚本**:在Yii框架中,项目的入口脚本...
Yii框架是一款基于组件的高性能PHP框架,专为Web2.0应用开发而设计。它能够帮助开发者快速构建高效、可扩展的Web应用。在“yii框架商城”项目中,我们可以看到Yii被用来构建一个电子商务平台,这样的应用通常涉及到...