Hel*_*llo 0 php zend-framework2
我找不到在ZF2中连接数据库的位置,在哪里创建application.ini来设置所需的数据,或者在module-> bootstrap方法中,请帮忙
正如其他人所指出的那样,你可以在你的config/autoload/global.php或者中添加如下内容config/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\''
),
),
Run Code Online (Sandbox Code Playgroud)
请注意,最佳做法是将敏感信息(例如密码)添加到local.php文件中.原因是版本控制软件应忽略此文件,如果由于.gitignore文件而使用Zend Skeleton应用程序,则默认情况下会被Git忽略.
要使用该连接,可以从服务管理器获取数据库适配器.例如,您可以在控制器操作中执行以下操作:
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));
}
Run Code Online (Sandbox Code Playgroud)
本手册应该让您了解如何使用数据库适配器执行查询; 你可能想要使用Zend\Db\Sql,所以上面只是一个例子.请注意,理想情况下,您不能直接在控制器中访问数据库(即执行数据库查询),但上面只是一个示例; 如果您使用任何这些设计模式,将数据库适配器注入数据访问层(DAL)或服务层非常容易.
上面发生的Zend\Db\Adapter\AdapterServiceFactory是调用它.发生这种情况是因为类实现了Zend\ServiceManager\FactoryInterface服务管理器检查的内容(有关更多信息,请参阅服务管理器的源代码).
该Zend\Db\Adapter\AdapterServiceFactory工厂获取从服务管理器配置和读取"DB"的关键.然后将此配置(如第一个代码示例中所示)传递给配置实例化数据库适配器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',
),
),
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4985 次 |
| 最近记录: |