我正在使用CakePHP 3.4
默认数据库设置存在于config/app.php
我想在config/my_db.php
中的app.php之外分离或覆盖数据库配置,并将其加载到bootstrap.php
文件中。
此设置现在将覆盖app.php
文件中存在的默认数据库设置。
有没有办法做到这一点?
编辑2
config / my.db.php 文件
<?php
return [
'my_db' => [
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
'username' => 'root',
'password' => 'my_pass',
'database' => 'testdb',
'encoding' => 'utf8',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => true,
'log' => false,
]
]
]
];
在bootstrap.php中加载
Configure::load('my_db', 'default', false);
答案 0 :(得分:1)
返回[
'my_db' => [
'setting_1' => 'value_1',
'setting_2' => 'value_2',
'setting_3' => 'value_3',
],
];
现在你必须加载它。 打开文件config / bootstrap.php, 定位线:
Configure::load('app', 'default', false);
并将此行添加到下方:
配置::加载(&#39; my_db&#39;,&#39;默认&#39;);
尝试THIS ::
配置/ bootstrap.php中
Configure::load('my_app', 'default','false');
配置/ my_app.php
<?php
return [
'Datasources' => [
'default' => [
'className' => 'Cake\Database\Connection',
'driver' => 'Cake\Database\Driver\Mysql',
'persistent' => false,
'host' => 'localhost',
'username' => 'root',
'password' => 'my_pass',
'database' => 'my_db',
'encoding' => 'utf8',
'timezone' => 'UTC',
'flags' => [],
'cacheMetadata' => true,
'log' => false,
]
]
];
答案 1 :(得分:0)
制作app.php
的副本,将其命名为app_override.php
并更改您的数据库设置。
然后像这样调整你的bootstrap.php
try {
Configure::config('default', new PhpConfig());
Configure::load('app', 'default', false);
} catch (\Exception $e) {
exit($e->getMessage() . "\n");
}
Configure::load('app_override', 'default');