2014-11-17 77 views
0

我使用ZF2创建新的应用程序。 我们在控制器和模型文件下有关于db连接的一些问题。Zend Framework 2数据库连接问题

我们已将所有数据库凭证放在“global.php”和“db.local.php”中,并在我们的“Module.php”文件中获取数据库适配器访问权限,但我们没有在控制器和模型文件中获取数据库连接并且不要在控制器和模型下运行查询。

这里是我的代码:

**global.php :** 

return array(
    'db' => array(
      'driver'=> 'Pdo', 
      'dsn'=> 'mysql:dbname=pick_fire;host=localhost', 
      'driver_options' => array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' 
      ), 
    ), 
    'service_manager' => array(
      'factories' => array(
        'Zend\Db\Adapter\Adapter'=> 'Zend\Db\Adapter\AdapterServiceFactory', 
      ), 
    ), 
); 

**db.local.php :** 

<?php 
return array(
'db' => array(
    'driver'  => 'Pdo', 
    'dsn'   => 'mysql:dbname=pick_fire;host=localhost', 
    'username'  =>'root', 
    'password'  =>'123456', 
    'driver_options'=> array(
     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8' 
    ), 
), 
'service_manager' => array(
    'aliases' => array(
     'db' => 'Zend\Db\Adapter\Adapter', 
    ), 
),); 

---------------------------------------------- 

**Module.php :** 

public function getServiceConfig() 
    { 
     return array(
      'factories' => array(
       'mail.transport' => function (ServiceManager $serviceManager) { 
        $config = $serviceManager->get('Config'); 
        $transport = new Smtp();     
        $transport->setOptions(new SmtpOptions($config['mail']['transport']['options'])); 

        return $transport; 
       }, 
      ), 
     ); 
     return array(
      'factories' => array(
       'adapter' => function($serviceManager) { 
        $config = $serviceManager->get('config'); 
        $dbAdapter = new \Zend\Db\Adapter\Adapter($config['db']); 
        return $dbAdapter; 
       } 
      ), 
     ); 
    } 

---------------------------------------------- 

请给我建议,我们如何获取数据库连接,并运行在我们的控制器和模型文件的查询。

谢谢你在高级。

回答

2

在你的getServiceConfig()中你有两个返回语句......第二个从来没有被调用。 这应该工作:

**Module.php :** 

public function getServiceConfig() 
{ 
    return array(
     'factories' => array(
      'mail.transport' => function (ServiceManager $serviceManager) { 
       $config = $serviceManager->get('Config'); 
       $transport = new Smtp();     
       $transport->setOptions(new SmtpOptions($config['mail']['transport']['options'])); 

       return $transport; 
      }, 
      'adapter' => function($serviceManager) { 
       $config = $serviceManager->get('config'); 
       $dbAdapter = new \Zend\Db\Adapter\Adapter($config['db']); 
       return $dbAdapter; 
      } 
     ), 
    ); 
}