Database ZF3中的多个DB连接

Database ZF3中的多个DB连接,database,zend-framework3,Database,Zend Framework3,当我使用ZF1时,我有一个带有db连接信息的ini文件(即mysql、pgsql、mssql等) 在我的模型中,我将扩展Zend_Db_表,并在我的 public function _construct() { $dbconfig = Zend_Registry::get('dbProfiles'); $this->db = Zend_Db::factory($dbconfig->modulename->adapter, $dbc

当我使用ZF1时,我有一个带有db连接信息的ini文件(即mysql、pgsql、mssql等)

在我的模型中,我将扩展Zend_Db_表,并在我的

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',


        ]
    ]
],
然后在service manager工厂中调用适配器以创建tablegateway,或者将适配器传递给控制器:

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