的manual說
您可以在配置 文件中根據需要定義多個連接。您還可以使用 Cake \ Datasource \ ConnectionManager :: config()在運行時定義其他連接。
所以我想你可以檢查調試的值AppController
beforeFilter
和更改默認的數據庫連接
AppController.php
if(Configure::read('debug') == 1)
{
ConnectionManager::config('default', [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'dev_server',
'username' => 'dev_username',
'password' => 'dev_passwd',
'database' => 'development',
'encoding' => 'utf8',
'timezone' => 'UTC',
'cacheMetadata' => true,
]);
}
我覺得你可以做應用類似的東西.php使用三元運算符
app.php
'Datasources' => [
'default' => getenv('CAKEPHP_DEBUG')== 1 ? [ /* debug params */ ] : [ /* default params */]
...
]
但不知何故,似乎是「乾淨」的方式做到這一點
我認爲一個更清潔的方式是設置在app.php,然後在AppController中選擇什麼配置,這兩種配置它不使用
app.php
'Datasources' => [
'debug' => [ /* debug params */ ],
'default' => [ /* default params */]
]
表文件
public static function defaultConnectionName() {
if(Configure::read('debug') == 1)
return 'debug';
return 'default';
}
似乎工作,謝謝!不過,我更喜歡將數據庫配置放在app.php而不是AppController.php中。 –
我編輯了一下,看看 – arilia
感謝您的更新!三元運算符完美運行!具有'defaultConnectionName'的解決方案不起作用:如果我正確地閱讀了文檔,則必須在每個* Table類中覆蓋此方法,並且我不希望經常複製代碼... –