Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/cakephp/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据库管理Cakephp_Cakephp_Cakephp 3.0 - Fatal编程技术网

数据库管理Cakephp

数据库管理Cakephp,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我需要在我的应用程序中设置到多个数据库的多个连接,一个用于开发,一个用于测试,另一个用于生产。我在stack overflow上找到了一些提示,通过url获取并传递许多不同的设置,所以我在我的应用程序上对其进行了改进,但我意识到,当我尝试运行迁移时,由于没有url可传递而无法工作,有没有其他方法可以做到这一点?或者,您是否打算管理与当前不同的应用程序模式?如果是生产或测试,这可能会将调试定义为false;如果是开发,则将调试定义为true。检查开发计算机的主机名 在linux或Windows上:

我需要在我的应用程序中设置到多个数据库的多个连接,一个用于开发,一个用于测试,另一个用于生产。我在stack overflow上找到了一些提示,通过url获取并传递许多不同的设置,所以我在我的应用程序上对其进行了改进,但我意识到,当我尝试运行迁移时,由于没有url可传递而无法工作,有没有其他方法可以做到这一点?或者,您是否打算管理与当前不同的应用程序模式?如果是生产或测试,这可能会将调试定义为false;如果是开发,则将调试定义为true。

检查开发计算机的主机名

在linux或Windows上:

hostname
app/config/app.default.php
复制到具有该主机名而不是单词
default
的文件中

编辑
app/Console/Installer.php
文件可以如下更改
createAppConfig
函数:

public static function createAppConfig($dir, $io)
{
    $appConfig = $dir . '/config/app.php';
    $defaultConfigPath = $dir . '/config/app.default.php';
    $hostnameConfigPath = $dir . '/config/app.' . gethostname() . '.php';
    $defaultConfig = file_exists($hostnameConfigPath) ? $hostnameConfigPath : $defaultConfigPath;
    if (!file_exists($appConfig)) {
        copy($defaultConfig, $appConfig);
        $io->write('Created `config/app.php` file');
    }
}
现在,当您在项目上运行
composer install
时,它将使用
app.default.php
配置,或者使用与当前计算机主机名匹配的其他配置


这会将所有配置设置耦合到一个环境或默认设置。这可能会解决一些问题,但如果您想在开发工作站上切换数据库。手动编辑
app.php
文件更容易。如果你需要做比这更复杂的事情。

我做了一些类似的事情,在my path.php中,我将APP_模式变量定义为“development”,然后在my APP.php中,如果开发这个数据库,我会创建一个case选项,如果“测试”这个变量数据库和另一个beahviour,如果“production”,那么另一个beahviour,APP将具有这种行为。这有助于我为每个应用程序模式创建多个分支,然后当我需要发送到测试或生产时,我只需进行合并,然后发送到jenkins deploy it

您需要在同一网站位置的数据库之间切换吗?因为我通常在自己的机器上开发,在自己的服务器上设置测试版本,最后在客户的服务器上进行生产。这是三个不同的位置。是的,这是我的情况,但我想设置一个变量或方法,我不需要为我的应用程序运行的每个位置设置不同的配置,因此我需要更少的配置或分支之间的冲突。您考虑过使用环境变量吗(来自服务器的主机配置)?不错。我使用一个单独的配置文件,将其放在webroot之上一级,并包含index.php中的()。将其放在webroot之外意味着a)无法远程访问,b)通常不在源代码控制范围内。