Zend framework 2 配置多数据库
2014年02月24日
由浅入深详细剖析Zend Framework 2 数据库连接,获取数据,请点击这里。
首先,配置config/auto/global.php
<?php /** * This source file is part of Qiai. * * PHP Version >=5.3 * * @category Qiais-Project * @package Config * @subpackage Global * @author Sai (QIAI) <sai@qiais.com> * @license Free http://www.qiai.com/license-free * @link http://www.qiais.com */ return array( 'db' => array( //这是主适配器,如果不需要使用Zend\Db\Adapter\Adapter的话,可以不配置 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=qiais_cn;host=localhost', 'username' => 'qiais', 'password' => 'qiais312', 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), //多数据库配置 'adapters' => array( 'qiais_cn' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=qiais_cn;host=localhost', 'username' => 'qiais', 'password' => 'qiais312', 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), ), 'qiais_jp' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=qiais_jp;host=localhost', 'username' => 'qiais', 'password' => 'qiais312', 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), ), ) ), 'service_manager' => array( 'factories' => array( 'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', ), 'abstract_factories' => array( 'Zend\Db\Adapter\AdapterAbstractServiceFactory', ), ), );
这里有2个数据库,qiais_cn, qiais_jp, 因为我程序别的地方要用到Zend\Db\Adapter\Adapter,所以额外配置了主适配器。如果不需要使用Zend\Db\Adapter\Adapter的话。只要如下配置就可以:
<?php /** * This source file is part of Qiai. * * PHP Version >=5.3 * * @category Qiais-Project * @package Config * @subpackage Global * @author Sai (QIAI) <sai@qiais.com> * @license Free http://www.qiai.com/license-free * @link http://www.qiais.com */ return array( 'db' => array( 'adapters' => array( 'qiais_cn' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=qiais_cn;host=localhost', 'username' => 'qiais', 'password' => 'qiais312', 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), ), 'qiais_jp' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=qiais_jp;host=localhost', 'username' => 'qiais', 'password' => 'qiais312', 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), ), ) ), 'service_manager' => array( 'abstract_factories' => array( 'Zend\Db\Adapter\AdapterAbstractServiceFactory', ), ), );
编辑module/Application/src/Application/Controller/IndexController.php
<?php /** * This source file is part of Qiai. * * PHP Version >=5.3 * * @category Qiais-Project * @package Application * @subpackage Controller * @author Sai (QIAI) <sai@qiais.com> * @license Free http://www.qiai.com/license-free * @link http://www.qiais.com */ namespace Application\Controller; use Zend\Mvc\Controller\AbstractActionController; use Zend\View\Model\ViewModel; use Zend\Debug\Debug; use Zend\Db\Adapter\Adapter; /** * Login controller for user module * * @category Qiais-Project * @package Application * @subpackage Controller */ class IndexController extends AbstractActionController { /** * getMutipleDB Action * 通过zf2配置文件,连接多个数据库,获取数据 * * @return false */ public function getMultipleDbAction() { //合并两数据库用的数组 $users = array(); //数据库 qiais_cn连接 $qiaisCn = $this->getServiceLocator()->get('qiais_cn'); $usersCn = $qiaisCn->query("select * from users", Adapter::QUERY_MODE_EXECUTE); foreach ($usersCn as $key => $cn) { $users[] = $cn; } // 数据库 qiais_jp连接 $qiaisJp = $this->getServiceLocator()->get('qiais_jp'); $usersJp = $qiaisJp->query("select * from users", Adapter::QUERY_MODE_EXECUTE); foreach ($usersJp as $key => $jp) { $users[] = $jp; } $viewModel = new ViewModel(array('users' => $users)); $viewModel->setTemplate('application/index/get-data-by-code.phtml'); return $viewModel; } /** * getDataByConfiguration Action * 通过zf2配置文件,连接数据库,获取数据 * * @return false */ public function getDataByConfigurationAction() { $db = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter'); $users = $db->query("select * from users", Adapter::QUERY_MODE_EXECUTE); $viewModel = new ViewModel(array('users' => $users)); $viewModel->setTemplate('application/index/get-data-by-code.phtml'); return $viewModel; } ......
访问http://zf2-tutorial/application/index/get-multiple-db
这里我们的中文数据库数据与日文数据库数据显示出来了