我如何在Doctrine存储库中注入服务?这样做是个好主意吗?我应该知道doctrine存储库容器还是应该在函数参数中传递服务?
例如:我想使用一个名为“knp_pager”的服务来分页查询。我希望在我的文章存储库的getArticleList()函数中提供它,以便我可以返回分页结果。
答案 0 :(得分:2)
恕我直言,将knp_pager
服务注入您的存储库并不是一个好主意。对您的查询进行分页不是存储库的责任。
为了限制您的查询,我会传递一个可选的offset
&存储库方法的可选length
,可由knp_pager
生成。像这样,存储库的责任得到尊重,您可以轻松地限制查询。
答案 1 :(得分:0)
您可以从您的存储库定义服务,symfony 2网站上有一个关于该服务的食谱。然后,您可以使用setter注入其他服务,并在容器配置中连接它们。
无论如何,我会尝试尽可能简单地保存存储库类(假设它们应该只提供通用数据访问),如果我需要对复杂操作进行更多抽象,则将它们注入其他服务中。