gpt4 book ai didi

zend-framework2 - 在 ZF2 上配置多 DB 连接

转载 作者:行者123 更新时间:2023-12-04 07:07:03 27 4
gpt4 key购买 nike

我实际上是 ZF2 的初学者
我设法在同一个应用程序上使用多个 BDD 并且它可以工作。
(我说的是这个:configure multiple databases in zf2)。

不过,我有一个小问题......

可以在 global.php 中声明我的自定义工厂吗? (在 service_manager 中)。
还是我需要在每个模块中声明它? (在 module.php 中)

将它声明到 global.php 中实际上是可行的,但我想知道它是否没有破坏框架的精神或其他什么......

谢谢你的时间 !

图努

最佳答案

将连接设置存储在本地配置中:

config/autoload/local.php

这是在您有多个具有不同数据库/连接凭据等的环境的情况下,例如,您可以提供暂存设置和实时设置,两者都使用单独的数据库。
然后,您也可以通过这种方式在应用程序中使用多个连接。

没有什么可以阻止您在这里设置多个连接,并根据需要在数据库适配器等中使用它们。

本地.php
return array(
/**
* Database Connection One
*/
'db' => array(
'driver' => 'pdo',
'dsn' => 'mysql:dbname=dbnamehere;host=localhost',
'username' => 'root',
'password' => '',
),
/**
* Database Connection Two
*/
'db_two' => array(
'driver' => 'pdo',
'dsn' => 'mysql:dbname=anotherdb;host=localhost',
'username' => 'root',
'password' => '',
),

如果您正在使用版本控制(您应该这样做!),这还允许您从存储库中排除 .local 配置文件,以避免在其中存储密码等,并允许更轻松地部署到多个环境。

您也可以设置多个适配器以使用不同的连接:

全局.php
return array(
/**
* Database Adapter(s)
*/
'service_manager' => array(
'factories' => array(
/**
* Adapter One - this factory will use the default 'db' connection
*/
'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
/**
* Adapter Two - use the second connection
*/
'Application\Db\AdapterTwo' => function($sm) {
$config = $sm->get('Config');
return new Adapter($config['db_two']);
},
),
),
);

关于zend-framework2 - 在 ZF2 上配置多 DB 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com