我有一个应用程序和数据库(都具有相同的结构)。我需要设置 Yii 连接到特定的数据库。例子:
http://mylink.com/index.php/ProjectName/Controller/Action
但我也有一部分应用程序是独立的,它连接到一个“全球”数据库,网址应该是这样的:
http://mylink.com/index.php/Controller/Action
我不知道该怎么做。更重要的是,如果我在单个项目中,Yii 创建的所有链接也应该包含项目名称
我有一个应用程序和数据库(都具有相同的结构)。我需要设置 Yii 连接到特定的数据库。例子:
http://mylink.com/index.php/ProjectName/Controller/Action
但我也有一部分应用程序是独立的,它连接到一个“全球”数据库,网址应该是这样的:
http://mylink.com/index.php/Controller/Action
我不知道该怎么做。更重要的是,如果我在单个项目中,Yii 创建的所有链接也应该包含项目名称
使用模块是您的完美方式。在 config/main.php 中声明几个 db 连接(例如 'db' 和 'db_custom')。那么有两种方法:
您可以在模块中重置 db 组件:
MyModule 类扩展 CWebModule { 公共函数初始化() { Yii::app()->setComponent('db',Yii::app()->getComponent('db_custom')); } }
另一种方法是将配置分为模块的基本配置和自定义配置(config/main.php 和 config/mymodule.php)。在 config/mymodule.php 中写:
$aMainConfig = require(dirname(__FILE__).'/main.php'); $aMainConfig['components']['db'] = $aMainConfig['components']['db_custom']; 返回$aConf;
所以你改变了主数据库组件,你的模块将使用另一个数据库。
您想使用Modules
和Multiples databases
。
为了使用modules
你必须在文件夹下创建/modules
与 Yii 类似的结构,例如:
ProjectName/
ProjectName.php
components/
views/
controllers/
DefaultController.php
extensions/
models/
views/
layouts/
default/
index.php
参考:如何创建模块。
我喜欢覆盖类CActiveRecord
并为每个数据库连接创建一个类的解决方案,例如:
class CActiveRecord_Db1 extends CActiveRecord{
public function getDbConnection(){
....
}
}
在您的模型上,您可以扩展特定的CActiveRecord
.