在 CakePHP 3 中创建一个单独的数据库配置文件

create a separate database config file in CakePHP 3

我正在使用 CakePHP 3.4

config/app.php

中存在默认数据库设置

我想在 app.php 之外分离或覆盖数据库配置,在 config/my_db.php 中说并将其加载到 bootstrap.php 文件中。

此设置现在将覆盖 app.php 文件中存在的默认数据库设置。

有什么方法可以做到这一点吗?

Edit 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);

复制您的 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');
  1. 在文件夹 config/
  2. 中创建 新文件
  3. 随意命名:my_db.php
  4. 添加您的代码配置代码:

return[

        'my_db' => [
            'setting_1'   =>  'value_1',
            'setting_2'   =>  'value_2',
            'setting_3'   =>  'value_3',
        ],
    ];
  1. 现在你必须加载它。 打开文件 config/bootstrap.php, 定位线:

    Configure::load('app', 'default', false);

  2. 并在下方添加此行:

    配置::加载('my_db', 'default');

试试这个::

config/bootstrap.php

Configure::load('my_app', 'default','false');

config/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,
           ]
       ]
];