0

カスタム データベース クエリを渡す必要がある ZF2 アプリケーションがあります。local.php と global.php でデータベース資格情報を設定しました。クラスからデータベース オブジェクトを取得するにはどうすればよいですか?

これは私の 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',
        ),
    ),
);
4

1 に答える 1

3

DB オブジェクトを取得するには

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();
    }
}
于 2013-02-06T09:34:21.933 に答える