2009
01.13
01.13
在 CakePHP 中,常常都是用單一資料庫當作資料來源。不過去年我遇到了一個問題,就是我必須新增其他的資料來源(也就是存取不同的資料庫),但是這個問題,一直無解,直到今天晚上狂翻線上文件才發知道解決的辦法(居然這麼簡單)…
如果有不同 DAO 要切換的話,必須這樣做:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var $default = array('driver' => 'mysql', 'host' => '127.0.0.1', 'login' => 'cakephpuser', 'password' => '', 'database' => 'mysql_project'); var $alternate = array('driver' => 'mssql', 'host' => '127.0.0.2', 'persistent' => true, 'login' => 'cakephpuser', 'password' => '', 'database' => 'mssql_project', 'port' => '1443', 'encoding' = > 'utf8', 'prefix' => ''); /* 在 DB config 中新增一組連線叫做 alternate 連接到 127.0.0.2 的 MSSQL 資料庫 */ |
在某個要使用該資料庫的 Model 中宣告:
|
1 2 3 4 5 6 7 8 |
class Example extends AppModel { var $useDbConfig = 'alternate'; /* 使用 DB 設定檔中的 $alternate 連線設定 */ var $name = 'Example'; /* 在 Controller 被叫用的名字,如不設定則依內定命名規則對應命名 */ var $useTable = 'members'; /* 使用 members 資料表,如不設定則依內定命名規則找資料表 */ var $tablePrefix = 'alternate_'; /* 資料表前面的 prefix 字串 */ var $primaryKey = 'example_id'; /* 預設命名規則使用 id 當主鍵,如果使用別的欄位名稱當主鍵則需特別指定 */ } |
而是 Controller 內的使用方法則不變(這邊就不用講了):
|
1 2 |
$this->Example->find('all'); |
更詳細的用法請見: Model Attributes




No Comment.
Add Your Comment