0

我正在使用 CakePHP 3.4

默认数据库设置存在于config/app.php

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

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

有没有办法做到这一点?

编辑 2

配置/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);
4

2 回答 2

1
  1. 在文件夹 config/ 中创建新文件
  2. 随意命名:my_db.php
  3. 添加您的代码配置代码:

返回 [

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

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

  2. 并在下面附加这一行:

    配置::load('my_db', 'default');

尝试这个 ::

配置/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,
           ]
       ]
];
于 2017-05-14T10:08:21.383 回答
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');
于 2017-05-14T10:00:10.553 回答