【发布时间】:2017-01-13 22:48:40
【问题描述】:
在我的 Silex 项目中,我使用 Database Abstraction Layer 包中的 Doctrine Query Builder。
"doctrine/dbal": "^2.5"
我像这样在我的应用程序容器中注册它。
/**
* Make a connection to the database.
*/
$app['db'] = function() use($app) {
$connectionParams = [
'dbname' => $_ENV['DBNAME'],
'user' => $_ENV['DBUSER'],
'password' => $_ENV['DBPASS'],
'host' => $_ENV['DBHOST'],
'driver' => $_ENV['DBDRIVER'],
];
return \Doctrine\DBAL\DriverManager::getConnection($connectionParams);
};
/**
* Instantiate the query builder
*/
$app['db.builder'] = function() use($app) {
return new \Doctrine\DBAL\Query\QueryBuilder($app['db']);
};
当我想查询数据库记录时,我使用存储库模式,然后将查询构建器实例注入存储库,然后我在存储库中使用查询构建器,我的存储库是这样创建的。
$app['repository.user'] = function() use($app) {
return new App\Repositories\UserRepository($app['db.builder']);
};
$app['repository.book'] = function() use($app) {
return new App\Repositories\BookRepository($app['db.builder']);
};
在用户存储库中,我查询用户以获取 id,然后我在图书存储库中查询属于该用户的书籍,但是问题是当我在图书存储库中使用查询构建器时,它是已经填满了之前的用户表。我是否需要重置查询生成器实例,或者我在将查询生成器注册到容器时做错了什么。
【问题讨论】:
-
你的 silex 版本是什么?
-
@MaxP。 "silex/silex": "~2.0"
标签: php symfony doctrine-orm silex dbal