我目前在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的新手,所以任何建议/建议都会受到赞赏。谢谢!
一种方法是在开发环境中设置一个未在生产环境中设置的环境变量,例如:
DEV_ENVIRONMENT=true
在应用程序的启动脚本中,在config/bootstrap.php
中,您可以查找该环境变量,如果已设置,则可以使用default
为dev
连接添加别名:
在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
数据源配置的方法相同。