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

在CakePHP 3中创建一个单独的数据库配置文件,cakephp,cakephp-3.4,Cakephp,Cakephp 3.4,我使用的是CakePHP3.4 默认数据库设置存在于config/app.php 我想分离或覆盖app.php之外的数据库配置,比如在config/my_db.php中,并将其加载到bootstrap.php文件中 此设置现在将覆盖app.php文件中存在的默认数据库设置 有没有办法做到这一点 编辑2 config/my.db.php文件 <?php return [ 'my_db' => [ 'Datasources' => [ '

我使用的是CakePHP3.4

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

我想分离或覆盖app.php之外的数据库配置,比如在
config/my_db.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,
           ]
       ]
    ]
];

复制您的
app.php
,将其命名为
app\u 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');
  • 在文件夹配置中创建新文件
  • 随意命名:my_db.php
  • 添加您的代码配置代码:
  • 返回[

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

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

  • 并将这一行附加在下面:

    Configure::load('my_db','default');

  • 试试这个::

    config/bootstrap.php

    config/my_app.php


    bootstrap.php文件中的更改只是…检查一下这个..什么是my_db???什么是database=>testdb???…检查一下这个
    my_db
    是在bootstrap文件中加载的名称。
    'database'=>'testdb'
    是数据库的名称不工作。它仍然使用
    app.php中的数据库设置de>文件请参见中的编辑2question@AnujTBE…我只是尝试Expalin…发生了什么…首先..Bootstrap.php文件引导..config/my_app.php文件…因此在my_app.php中,无需返回此my_db'=>[…]只需先删除它..然后尝试..嘿,它成功了。谢谢。但是我不能将
    Configure::load('my_app','default');
    在上一个
    bootstrap.php
    文件中。因为这样做会产生错误,因为如果config为null,则键必须是一个数组。
    当我像下面这样添加
    Configure::load('app','default',false);
    块时,它工作正常
            'my_db' => [
                'setting_1'   =>  'value_1',
                'setting_2'   =>  'value_2',
                'setting_3'   =>  'value_3',
            ],
        ];
    
    Configure::load('my_app', 'default','false');
    
    <?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,
               ]
           ]
    ];