2013-02-06 36 views
0

我有一个ZF2应用程序,我需要通过自定义数据库查询。我已经在local.php和global.php中设置了我的数据库凭证。从一个类,我如何获得一个数据库对象?ZF2数据库对象

这是我global.php:

return array(
    'db' => array(
     'driver' => 'Pdo', 
     'dsn' => 'mysql:dbname=database_name;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', 
     ), 
    ), 
); 

回答

3

要得到数据库对象

在Module.php

public function getServiceConfig() 
{ 
    return array(
     'factories' => array(
      'db_adapter' => function($sm) { 
       $config = $sm->get('Configuration'); 
       return new \Zend\Db\Adapter\Adapter($config['db']); 
      }, 
      'xyz_class_name' => function ($sm) { 
       return new \WhatEver\Model\xyzMapper($sm->get('db_adapter')); 
      }, 
     ), 
    ); 
} 

在xyzMapper

namespace WhatEver\Model; 

use Zend\Db\Adapter\Adapter; 

class xyzMapper 
{ 
    protected $adapter; 

    /** 
    * Make the Adapter object avilable as local prtected variable 
    * @param Adapter $adapter - DB PDO PgSQL conn 
    */ 
    public function __construct(Adapter $adapter = null) 
    { 
     $this->adapter = $adapter; 
    } 

    /** 
    * @return result object 
    */ 
    public function getdata() 
    { 
     $sql = "SELECT * FROM tbl"; 

     $statement = $this->adapter->query($sql); 
     return $statement->execute(); 
    } 
}