Yii連線多個資料庫的方法
Yii連線多個資料庫的方法
一、配置多資料庫
大多數情況下,我們都會採用同一型別的資料庫,只是為了緩解壓力分成主從或分散式形式而已。宣告你可以在主配置檔案(main.php)中裡宣告其它的資料庫連線:
<?php
`components`=>array(
`db`=>….// 主連結
`db1`=>…// 從連線1
`db2`=>…// 從連線2
)
操作在程式碼裡,可以通過Yii::app()->db1和Yii::app()->db2獲得兩個從連線。
`db1`=>array(
`class` =>`CDbConnection`
,
`connectionString`=>
`mysql:host=localhost;dbname=test;charset=…`,
`emulatePrepare`=>
true,
`username`=>
`test`,
`password`=>
`test`,
`charset`=>
`utf8`,
),
第二個以後的db1陣列中一定要寫上class引數,讓Yii
知道你在定義一個資料庫連線物件,不然會報錯。
一旦我們這樣定義以後,就可以通過Yii::app()->db1來指向第二個資料庫了。
二、過載GetDbConnection() 方法
因為每個Model都是(直接或者間接地)繼承自基類CActiveRecord的,因此,都包含GetDbConnection()這個方法,GetDbConnection()返回一個資料庫連線物件的控制程式碼。我們需要在模型(model)裡面通過過載這個方法來返回我們需要的資料庫物件。
然後,假設我們新建了一檔案 : protected/components/Sub1ActiveRecord.php ,然後在你的所有要用db1這個資料庫的model裡extendSub1ActiveRecord 而不是 CActiveRecord 。
這裡我們是通過擴充套件Yii通用類來定義一個新的類,而不是在每個模型裡面都過載 getDbConnection 方法,這樣做的好處是更大程度上的程式碼重用,節省時間。
過載程式碼如下:
// protected/components/MyActiveRecord.php
class
Sub1ActiveRecord extends CActiveRecord{
public function getDbConnection()
{
if(self::$db!==null)
returnself::$db;
else
{
//這裡就是我們要修改的
self::$db=Yii::app()->getComponent(`db1`);
//self::$db=Yii::app()->db1;
if(self::$db instanceofCDbConnection)
return self::$db;
else
throw new CDbException(Yii::t(`yii`,`Active
Record requires a “db1” CDbConnectionapplication component.`));
}
}
………..
}
三,在模型中使用
經過以上兩步以後,我們就可以這樣來用:
1 |
// protected/models/Ad.php |
相關文章
- Laravel 使用多個資料庫連線Laravel資料庫
- 2.6 Laravel配置多個資料庫連線Laravel資料庫
- php連線多資料庫PHP資料庫
- 多連線資料庫DBeaverUltimate中文資料庫
- Power Builder同時連線多個資料庫(轉)UI資料庫
- PHP中的資料庫連線方法PHP資料庫
- 資料庫連線的方法種種資料庫
- 求助: 用Hibernate連線多個資料庫的問題?資料庫
- 如何設定多資料庫連線?!資料庫
- 客戶端連線資料庫的方法客戶端資料庫
- ASP連線MySQL資料庫的方法(轉)MySql資料庫
- 【PG資料庫】PG資料庫的安裝及連線方法資料庫
- 資料庫的連線資料庫
- 幾種常見的資料庫連線方法資料庫
- php連線mysql資料庫的幾種方法PHPMySql資料庫
- 用JSP連線mysql資料庫的方法JSMySql資料庫
- 配置Oracle Gateways透明閘道器連線多個MSSQL資料庫OracleGatewaySQL資料庫
- 用Navicat連線資料庫-資料庫連線(MySQL演示)資料庫MySql
- 一個資料庫連線池的問題資料庫
- Oracle RMAN 連線資料庫認證方法Oracle資料庫
- 連線資料庫資料庫
- 資料庫連線資料庫
- 各種連線資料庫的連線字串資料庫字串
- sqlplus連線資料庫的幾種方法SQL資料庫
- JDBC連線MySQL資料庫的方法和例項JDBCMySql資料庫
- JDBC連線各種資料庫的方法(經典)JDBC資料庫
- Java連線oracle資料庫的兩種常用方法JavaOracle資料庫
- 用javascript連線資料庫的解決方法 (轉)JavaScript資料庫
- Java 的JDBC 資料庫連線池實現方法JavaJDBC資料庫
- 使用連線池連線資料庫,能不能建立多個連線池?因為我們現在的系統要實現多個網站的管理資料庫網站
- JDBC-ODBC橋接方法連線Excel資料庫的方法JDBC橋接Excel資料庫
- 資料庫的連線數資料庫
- 連線資料庫的疑惑資料庫
- 資料庫的連線串資料庫
- 資料庫連線 系列一:laravel框架如何連線兩個資料庫(不同伺服器)資料庫Laravel框架伺服器
- 教你如何無程式碼整合連線多個不同型別資料庫型別資料庫
- JDBC連線自定義sqlserver資料庫例項名(多個例項)JDBCSQLServer資料庫
- 如何設定Struts 連線資料庫的公共類,作個公共的類,來連線資料庫,如何寫???資料庫