在CakePHP 3

时间:2017-05-14 09:51:18

标签: cakephp cakephp-3.4

我正在使用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);

2 个答案:

答案 0 :(得分:1)

  1. 新文件创建到文件夹config /
  2. 将其命名为您喜欢的名称: my_db.php
  3. 添加代码配置代码:
  4. 返回[

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

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

    2. 并将此行添加到下方:

      配置::加载(&#39; my_db&#39;,&#39;默认&#39;);

    3. 尝试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');