0
我正在CakePHP中建立一個可變數據庫的網站。 我這樣做是用下面的代碼:Cache-issue更改CakePHP數據庫設置
控制器:
$db_host = $DB_SET['Project']['db_host']; //From other database
$db_user = $DB_SET['Project']['db_user'];
$db_pass = $DB_SET['Project']['db_pass'];
$db_database = $DB_SET['Project']['db_database'];
ConnectionManager::create("client_db", array(
'datasource' => 'Database/Mysql',
'driver' => 'mysql',
'persistent' => false,
'host' => $db_host,
'login' => $db_user,
'password' => $db_pass,
'database' => $db_database,
'prefix' => '',
'encoding' => 'UTF8',
'port' => '',
));
$DB_LINE = $this->Page->findPage('3');
MODEL:
class Page extends Model {
public $useDbConfig = 'client_db';
function findPage($pagenr) {
$page = $this->find('first', array(
'conditions' => array (
'Page.id' => $pagenr)
));
return $page;
}
}
現在我還需要在運行中的數據庫更改表。 我做到這一點使用(控制器):
$tbl_current = array('tbl_cheques', 'tbl_wishes');
$this->Modelname->useTable = $tbl_current[$pageid]; //Getting the pageID from an url parameter.
一切正常,只是如果我不等待的同時單擊另一個頁面之前,我得到這個錯誤:
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Page.fqlkdf' in 'field list'
這是因爲蛋糕仍然有他的緩存中的上一張表。 如果我等一會兒,然後更改頁面,它工作正常。 有關此問題的任何建議? 由於提前,
亞倫
謝謝,但我已經嘗試過這一點,這是行不通的。 Cache :: clear(false,'Page'); //模型是Page.php,對嗎? (頁面擴展模型...) – Aaron
不,請使用我輸入的內容,它將清除每個模型的緩存(Cake 2.x)。 – jeremyharris
奇怪......它不起作用,我嘗試在視圖函數和beforefilter()函數中使用代碼。是Cake 2.1。並使用App :: import('Cache');導入類... – Aaron