我目前在config / app.php中有两个数据库设置,一个用于生产的名称为“ default”,另一个用于开发的名称为“ test”。现在,我想将当前的“测试”重命名为“ dev”并进行第三个设置,将其命名为“ test”以用于测试。 在生产数据库和开发数据库之间进行切换可以正常工作,但是当我仍处于开发环境(在开发分支中工作)时,我的应用程序如何知道何时使用测试数据库?我应该对哪些文件进行哪些更改? 我整天都在搜寻Google,但是我只能找到在生产和开发之间切换的方式。我需要知道如何在开发和测试之间进行切换。
下面是我要牢记的一点,但是我敢肯定,我也必须修改其他一些文件才能使它们正常工作。
# 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完全陌生,因此任何建议/建议都将不胜感激。谢谢!
答案 0 :(得分:1)
一种方法是在开发环境中设置未在生产环境中设置的环境变量,例如:
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
数据源配置的方法大致相同。