2009
01.13
01.13
在 CakePHP 中,常常都是用單一資料庫當作資料來源。不過去年我遇到了一個問題,就是我必須新增其他的資料來源(也就是存取不同的資料庫),但是這個問題,一直無解,直到今天晚上狂翻線上文件才發知道解決的辦法(居然這麼簡單)…
如果有不同 DAO 要切換的話,必須這樣做:
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 中宣告:
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 內的使用方法則不變(這邊就不用講了):
$this->Example->find('all');
更詳細的用法請見: Model Attributes




No Comment.
Add Your Comment