如何让Cakephp 3通过Apache环境变量选择数据库连接

威尔·吉尼斯(Wile E. Genius)

我正在使用cakephp v3,并希望在两种不同的环境中安装应用程序,一种用于开发,另一种用于生产。两种安装都应包含完全相同的文件(和文件内容),因此我可以使用'git'或'svn'轻松部署应用程序。

如果两个环境都托管在同一台计算机上,则我需要不同的数据库设置(以便开发环境使用其自己的“测试”数据库)。我想到了在中配置两个“数据源” app.php,“默认”用于生产和“开发”。

但是,如何在两个来源之间切换?

更具体地说:目前,我在Apache配置中为开发环境定义以下环境变量:

SetEnv CAKEPHP_DEBUG 1

然后,我在app.php文件中更改了“调试”的定义,如下所示:

'debug' => (bool)getenv('CAKEPHP_DEBUG'),

这仅在开发计算机上启用调试模式。现在,我还想以同样简单的方式切换数据库配置。

(我已经找到了cakephp v2的一些解决方案,但是所有解决方案都已经很老了,我不确定在cakephp v3中实现它的最佳方法是什么。)

阿里利亚

手册

您可以在配置文件中定义任意数量的连接。您也可以在运行时使用Cake \ Datasource \ ConnectionManager :: config()定义其他连接。

所以我想您可以检查debug的值AppController beforeFilter并更改默认的数据库连接

AppController.php

if(Configure::read('debug') == 1)
{
    ConnectionManager::config('default', [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'dev_server',
        'username' => 'dev_username',
        'password' => 'dev_passwd',
        'database' => 'development',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,
    ]);
}

我认为您可以使用三元运算符在app.php中执行类似操作

app.php

'Datasources' => [
    'default' => getenv('CAKEPHP_DEBUG')== 1 ? [ /* debug params */ ] : [ /* default params */]
    ...
]

但是不知何故似乎不是“干净”的方法

我认为更干净的方法是在app.php中设置两个配置,然后在appController中选择要使用的配置

app.php

'Datasources' => [
    'debug' => [ /* debug params */ ],
    'default' => [ /* default params */]
]

表格文件

public static function defaultConnectionName() {
    if(Configure::read('debug') == 1)
        return 'debug';
    return 'default';
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CakePHP 3:如何更新foreignKey?

来自分类Dev

CakePHP和GoogleMapsHelper:如何从数据库中加载标记?

来自分类Dev

CakePHP-如何编辑从数据库返回的字段?

来自分类Dev

CakePHP如何搜索“用户”数据库表?

来自分类Dev

CakePHP-如何编辑从数据库返回的字段?

来自分类Dev

如何防止CakePHP 3.0通过Ajax请求扩展会话超时?

来自分类Dev

如何在CANoe for CAPL和Panel中为CAN数据库创建新的环境变量?

来自分类Dev

如何在cakephp中连接两个数据库

来自分类Dev

如何使用Apache HttpClient 4.3.4通过代理测试与服务器SSL端口的连接?

来自分类Dev

在CakePHP 3中连接多个数据库

来自分类Dev

cakephp 3中的多个数据库连接

来自分类Dev

如何使用MVC5通过创建/索引操作将类(包含类列表)用作数据库

来自分类Dev

如何在连接表中查找Cakephp?

来自分类Dev

CakePHP如何连接不同目录中的文件?

来自分类Dev

如何使用 Cakephp 对查询进行连接?

来自分类Dev

如何验证选择选项cakephp

来自分类Dev

如何在CakePHP上创建自己的库

来自分类Dev

如何在CakePHP上创建自己的库

来自分类Dev

如何使用APIController在CakePHP中插入数据?

来自分类Dev

如何在cakePHP中保存此数据?

来自分类Dev

如何从cakephp 3中的URL访问参数

来自分类Dev

CakePHP 3:如何接收翻译的内容?

来自分类Dev

协会如何运作?cakephp 3.x

来自分类Dev

如何使用CakePHP 3联接多个表?

来自分类Dev

CakePHP 3:如何接收翻译的内容?

来自分类Dev

Cakephp 3如何制作会话数组

来自分类Dev

Cakephp3:如何使用toList()

来自分类Dev

如何扩展表类 CakePhp3

来自分类Dev

CakePHP连接到远程数据库

Related 相关文章

热门标签

归档