Zend Framework 2数据库连接问题

Kap*_*pta 1 php mysql zend-framework zend-db-table zend-framework2

我使用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',
            ),
    ),
);
Run Code Online (Sandbox Code Playgroud)
**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;
                }
            ),
        );
    }

----------------------------------------------
Run Code Online (Sandbox Code Playgroud)

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

谢谢您的进阶。

小智 5

在您的getServiceConfig()中,您有两个return语句……第二个永不调用。这应该工作:

**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;
            }
        ),
    );
}
Run Code Online (Sandbox Code Playgroud)