database - ZF3 中的多个数据库连接

标签 database zend-framework3

当我使用 ZF1 时,我有一个包含数据库连接信息(即 mysql、pgsql、mssql 等...)的 ini 文件

modulename.adapter = PDO_MYSQL
modulename.params.host = xxx.xxx.x.xx
modulename.params.username = username
modulename.params.password = password
modulename.params.dbname = databasename

在我的模型中,我会扩展 Zend_Db_Table 并在我的

中执行以下操作
public function _construct() {
        $dbconfig = Zend_Registry::get('dbProfiles');
        $this->db = Zend_Db::factory($dbconfig->modulename->adapter,
        $dbconfig->modulename->params);         
}

在某些函数中,我有以下代码

$sql = "SELECT * FROM Table";
$result = $this->db->query($sql);
while($row =$result->fetch()) {
//... do something
}            

我怎样才能在 ZF3 中做类似的事情?连接多种数据库类型、查询不同的表并获取我的结果?

谢谢。

最佳答案

在您的配置中设置与您拥有的数据库一样多的数据库适配器:

    'db'    => [
    'adapters'  => [
        'Application\Db\Db1Adapter'   => [
            'driver' => 'Pdo_Mysql',
            'Dsn'   => 'mysql:dbname=Your_db_1_name;host=your_host;charset=utf8',
            'password' => 'your_password',
            'username' => 'your_username',

        ],

        'Application\Db\Db2Adapter' => [
            'driver'    => 'Pdo_Mysql',
            'Dsn'       =>  'mysql:dbname=Your_db_2_name;host=your_host;charset=utf8',
            'password' => 'your_password',
            'username' => 'your_username',


        ]
    ]
],

然后调用服务管理器工厂中的适配器来创建表网关或将适配器传递给 Controller ​​:

use \Application\Db\Db1Adapter;
...
    $db1Adapter = $container->get(Db1Adapter::class);
    ...

关于database - ZF3 中的多个数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49140359/

相关文章:

database - zf3 中的 doctrine2 多数据库连接?

php - 使用 ZendSkeletonModule 创建新模块 ZF3

php - zend 框架 3 session 不工作

ruby-on-rails - 在列中存储版本号(例如 1、1.1、1.11、1.11.1)的最佳方法?

php - 将随机 ID 插入数据库

java - 如何处理并发数据库请求或如何在长时间运行的查询正在进行时运行短 SQL 查询

c# - 如何将数据表动态映射到 SQL 表

mysql - 如何让这个 MySQL 查询在 MySQL 4.1.15 上运行?

php - 状态 404 : ZF3 and Nginx