基于环境的蛋糕PHP3交换机数据库连接



我想根据环境或应用程序域切换默认数据源。

'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

最新更新