Yii連線多個資料庫的方法

2021-07-10 19:41:46 字數 1651 閱讀 9601

yii連線多個資料庫的方法

一、配置多資料庫

大多數情況下,我們都會採用同一型別的資料庫,只是為了緩解壓力分成主從或分布式形式而已。宣告你可以在主配置檔案

(main.php

)中里宣告其它的資料庫連線:

<?php

'components'=>array(

'db'=>....// 

主鏈結'db1'=>...// 

從連線1

'db2'=>...// 

從連線2

)操作在**裡,可以通過

和獲得兩個從連線。

'db1'

=>

array

('class'

=>

'cdbconnection'

,'connectionstring'

=>

'mysql:host=localhost;dbname=test;charset=…'

,'emulateprepare'

=>true,

'username'

=>

'test'

,'password'

=>

'test'

,'charset'

=>

'utf8',)

,第二個以後的

db1陣列中一定要寫上

class

引數,讓

yii

知道你在定義乙個資料庫連線物件,不然會報錯。

一旦我們這樣定義以後,就可以通過

來指向第二個資料庫了。

二、過載getdbconnection() 方法

因為每個model都是(直接或者間接地)繼承自基類cactiverecord的,因此,都包含getdbconnection()這個方法,getdbconnection()返回乙個資料庫連線物件的控制代碼。我們需要在模型(model)裡面通過過載這個方法來返回我們需要的資料庫物件。

然後,假設我們新建了一檔案 :protected/components/sub1activerecord.php,然後在你的所有要用db1這個資料庫的model裡extendsub1activerecord 而不是 cactiverecord 。

這裡我們是通過擴充套件yii通用類來定義乙個新的類,而不是在每個模型裡面都過載 getdbconnection 方法,這樣做的好處是更大程度上的**重用,節省時間。

過載**如下:

// protected/components/myactiverecord.php

classsub1activerecordextendscactiverecord

}...........

}三,在模型中使用

經過以上兩步以後,我們就可以這樣來用: 1

2345

// protected/models/ad.php

classadextendssub1activerecord

actionrecord 連線多個資料庫

第一種 每個model各自連線 建立乙個資料庫鏈結 example activerecord base.establish connection adapter mysql2 host localhost username myuser password mypass database someda...

laravel設定多個資料庫連線

1 在專案根目錄下的.env檔案中,加入一組資料庫配置 db host center localhost db port center 3306 db database center test 換成自己的資料庫名 db username center root 換成自己的使用者名稱 db passw...

yii2中多個資料庫配置

yii2配置多個資料庫時遇到乙個很噁心的報錯 已解決 最後好好捋了一下現在專案中db配置,發現專案中db配置是完全脫離出來單獨檔案的,而我在db中加了個comoments,然後web引用db的時候其實是有comoments的,所以導致一直提示這個報錯 配置多個資料庫歸根到底就是在呼叫db的入口中加d...