当我使用 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/