如果您希望在整个应用程序中共享查询,则可以使用Doctrine存储库。
将持久性逻辑放在存储库中是一个好主意,这样存储库不仅可用于查询,还可用于创建和更新对象吗?
持久性逻辑还有其他地方不在控制器本身吗?
答案 0 :(得分:3)
将其放入service layer。在这种情况下,您的控制器只知道服务层,但不知道存储库层。服务层可以将查询委托给存储库层,也可以单独执行 - 我更喜欢后者。
只是一个基本的例子:
class CommentService
{
private $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function find($id)
{
// do a query here or delegate to a repository
}
public function findByPost(Post $post)
{
// do a query here or delegate to a repository
}
public function save(Comment $comment)
{
// exec an operation here
}
public function delete(Comment $comment)
{
// exec an operation here
}
}