基于环境的CakePHP3交换机数据库连接

时间:2016-06-09 00:21:02

标签: php database cakephp cakephp-3.0

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

'Datasources' => [
  'default' => [
      'className' => 'Cake\Database\Connection',
      'driver' => 'Cake\Database\Driver\Mysql',
      'persistent' => false,
      'host' => 'localhost'
  ],

  'local' => [
      'className' => 'Cake\Database\Connection',
      'driver' => 'Cake\Database\Driver\Mysql',
      'persistent' => false,
      'host' => 'localhost'
  ], 

  'stage' => [
      'className' => 'Cake\Database\Connection',
      'driver' => 'Cake\Database\Driver\Mysql',
      'persistent' => false,
      'host' => 'localhost'
  ] 
],    

CakePHP3有一些逻辑来处理这个kaind的东西吗?我在te文档中找不到任何有用的东西。

谢谢, 马利。

1 个答案:

答案 0 :(得分:1)

当每个数据库上的所有表都相同时

您可以使用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