使用Doctrine存储库中的服务

时间:2012-01-12 13:20:03

标签: symfony doctrine-orm

我如何在Doctrine存储库中注入服务?这样做是个好主意吗?我应该知道doctrine存储库容器还是应该在函数参数中传递服务?

例如:我想使用一个名为“knp_pager”的服务来分页查询。我希望在我的文章存储库的getArticleList()函数中提供它,以便我可以返回分页结果。

2 个答案:

答案 0 :(得分:2)

恕我直言,将knp_pager服务注入您的存储库并不是一个好主意。对您的查询进行分页不是存储库的责任。

为了限制您的查询,我会传递一个可选的offset&存储库方法的可选length,可由knp_pager生成。像这样,存储库的责任得到尊重,您可以轻松地限制查询。

答案 1 :(得分:0)

您可以从您的存储库定义服务,symfony 2网站上有一个关于该服务的食谱。然后,您可以使用setter注入其他服务,并在容器配置中连接它们。

无论如何,我会尝试尽可能简单地保存存储库类(假设它们应该只提供通用数据访问),如果我需要对复杂操作进行更多抽象,则将它们注入其他服务中。