Проблема с подключением к базе данных Zend Framework 2

Я использую ZF2 для создания новых приложений. У нас есть некоторая проблема с подключением к базе данных под контроллером и файлом модели.

Мы поместили все учетные данные базы данных в «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;
                }
            ),
        );
    }

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

Пожалуйста, предложите мне, как мы получаем соединение с базой данных и запускаем запросы в нашем контроллере и файлах модели.

Заранее благодарю.


person Kapil Gupta    schedule 17.11.2014    source источник


Ответы (1)


В вашем 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;
            }
        ),
    );
}
person goten4    schedule 17.11.2014