0

我在ZF2中找不到连接到数据库的位置,在哪里创建application.ini来设置所需的数据或在模块->引导方法中,请帮助

4

3 回答 3

6

正如其他人指出的那样,您可以将以下内容添加到您的config/autoload/global.phporconfig/autoload/local.php中。

'db' => array(
    'driver' => 'Pdo',
    'dsn' => 'mysql:dbname=mydb;host=localhost',
    'username' => 'root',
    'password' => '',
    'driver_options' => array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
    ),
),

请注意,最好将敏感信息(例如密码)添加到local.php文件中。原因是版本控制软件应该忽略此文件,如果您使用 Zend Skeleton Application,则默认情况下 Git 会忽略此.gitignore文件。

要使用连接,您可以从服务管理器获取数据库适配器。例如,您可以在控制器操作中执行以下操作:

public function someAction() {
    $dbAdapter = $this->serviceLocator->get('Zend\Db\Adapter\Adapter');

    // Do something with the database adapter, e.g.:
    $dbAdapter->query('SELECT username FROM user WHERE id = ?', array(37));
}

手册应该让您开始了解如何使用数据库适配器执行查询;您可能会想要使用Zend\Db\Sql,所以上面只是一个示例。请注意,理想情况下,您最好不要直接在控制器中访问数据库(即执行数据库查询),但以上只是一个示例;如果您使用任何这些设计模式,将数据库适配器注入数据访问层(DAL) 或服务层非常容易。

上面发生的Zend\Db\Adapter\AdapterServiceFactory是调用了。发生这种情况是因为该类实现了Zend\ServiceManager\FactoryInterface,服务管理器会检查它(有关更多信息,请参阅服务管理器的源代码)。

Zend\Db\Adapter\AdapterServiceFactory工厂从服务管理器获取配置并读取 'db' key。然后将此配置(如第一个代码示例所示)传递给配置实例化数据库适配器Zend\Db\Adapter\Adapter构造函数。

因此,您所要做的就是db在配置文件中的密钥下配置您的数据库连接,并使用服务管理器中的密钥获取它Zend\Db\Adapter\Adapter- 然后其余的会自动为您完成。

编辑:

确保您已AdapterServiceFactory在配置中启用上述功能。如果您使用的是 ZendSkeletonApplication,请在config/autoload/global.php.

return array(
    'service_manager' => array(
        'factories' => array(
            'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
        ),
    ),
);
于 2013-03-31T01:06:28.107 回答
2

配置(global.php 等):

'db' => array(
  'driver' => 'Pdo',
  'dsn'            => 'mysql:dbname=mydb;host=localhost',
  'username'       => 'mydb',
  'password'       => '',
  'driver_options' => array(
      PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
  ),
于 2013-03-29T09:37:13.813 回答
1

转到目录:you_application_folder/config/autoload/

在 global.php 中

<?php
return array(
'db' => array(
  'driver' => 'Pdo',
  'dsn'            => 'mysql:dbname=mydb;host=localhost',
  'driver_options' => array(
      PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
  ),
);

?>

in local.php //这里保存重要数据

<?php
return array(
'db' => array(
  'username'       => '*****',
  'password'       => '*****',
);

?>
于 2013-03-29T09:44:19.620 回答