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...