数据库在CakePHP3中的生产,开发和测试之间切换

问题描述 投票:0回答:1

我目前在config / app.php中有两个数据库设置,一个名为“default”用于生产,另一个名为“test”用于开发。我现在想要将当前的“test”重命名为“dev”并进行第3次设置,为测试目的命名为“test”。在生产数据库和开发数据库之间切换工作正常,但是当我还处于开发环境(开发分支)时,我的应用程序如何知道何时使用测试数据库?我应该对哪些文件做出哪些更改?我一直在谷歌上搜索,但我能找到的只是在生产和开发之间切换的方式。我需要知道如何在开发和测试之间切换。

下面是我的想法,但我很确定我必须修改其他一些文件,以使它们正常工作。

# config/app.php

'Datasources' => [

  // Production
  'default' => [
    'className' => 'Cake\Database\Connection',
    'driver' => 'Cake\Database\Driver\Mysql',
    'persistent' => false,
    'host' => 'MY PRODUCTION HOST',
    'username' => 'MY PRODUCTION USERNAME',
    'password' => 'MY PRODUCTION PASSWORD'
    'database' => 'MY PRODUCTION DATABASE NAME'
    'quoteIdentifiers' => false,
    // 'encoding' and so on...
  ],

  // Development
  'dev' => [
    'className' => 'Cake\Database\Connection',
    'driver' => 'Cake\Database\Driver\Mysql',
    'persistent' => false,
    'host' => 'MY DEVELOPMENT HOST',
    'username' => 'MY DEVELOPMENT USERNAME',
    'password' => 'MY DEVELOPMENT PASSWORD'
    'database' => 'dev'
    'quoteIdentifiers' => false,
    // 'encoding' and so on...
  ],

  // Test
  'test' => [
    'className' => 'Cake\Database\Connection',
    'driver' => 'Cake\Database\Driver\Mysql',
    'persistent' => false,
    'host' => 'SAME AS MY DEVELOPMENT HOST',
    'username' => 'SAME AS MY DEVELOPMENT USERNAME',
    'password' => 'SAME AS MY DEVELOPMENT PASSWORD'
    'database' => 'test'
    'quoteIdentifiers' => false,
    // 'encoding' and so on...
  ]
],

我是CakePHP的新手,所以任何建议/建议都会受到赞赏。谢谢!

php-7 cakephp-3.x
1个回答
1
投票

一种方法是在开发环境中设置一个未在生产环境中设置的环境变量,例如:

DEV_ENVIRONMENT=true

在应用程序的启动脚本中,在config/bootstrap.php中,您可以查找该环境变量,如果已设置,则可以使用defaultdev连接添加别名:

在bootstrap.php中:

// Look for this line:
ConnectionManager::setConfig(Configure::consume('Datasources'));

// Add your code someplace after that:
if(getenv('DEV_ENVIRONMENT')){
    ConnectionManager::alias('dev', 'default');
}

除非在应用程序中引用dev连接,否则别名函数将加载default数据源(除非被覆盖,否则所有表都会执行)。

这通常与PhpUnit测试在测试运行期间用于替换test数据源配置的方法相同。

© www.soinside.com 2019 - 2024. All rights reserved.