我想根据环境或应用程序域切换默认数据源。
'Datasources' => [
'default' => [
'className' => 'CakeDatabaseConnection',
'driver' => 'CakeDatabaseDriverMysql',
'persistent' => false,
'host' => 'localhost'
],
'local' => [
'className' => 'CakeDatabaseConnection',
'driver' => 'CakeDatabaseDriverMysql',
'persistent' => false,
'host' => 'localhost'
],
'stage' => [
'className' => 'CakeDatabaseConnection',
'driver' => 'CakeDatabaseDriverMysql',
'persistent' => false,
'host' => 'localhost'
]
],
CakePHP3 有一些逻辑来处理这件事吗?我在文档中找不到任何有用的东西。
谢谢毛里。
当每个数据库上的所有表都相同时
您可以使用 ConnectionManager::alias():
从控制器 :
使用 Cake\Datasource\ConnectionManager;
if($somecase == "local") {
ConnectionManager::alias('local', 'default');
else if($somecase == "stage") {
ConnectionManager::alias('stage', 'default');
}
else {
//cake will use default
}
更多参考 : http://api.cakephp.org/3.0/class-Cake.Datasource.ConnectionManager.html#_alias