如何通过依赖注入将服务注入实体存储库?
我试着这样:
<service id="rp.repository.user" class="RP\CoreBundle\Repository\UserRepository" factory-service="doctrine.orm.entity_manager" factory-method="getRepository"> <call method="setSecurityContext"> <argument type="service" id="security.context"/> </call> </service>
解决方法
建议不要将服务注入存储库,因为它会破坏关注点.相反,您应该使用调用存储库的服务类.根据您的评论,简单的工作流程如下所示:
>定义UserService类,并将其注册为服务.
>将security.context注入UserService
>定义UserService :: getUsers()(或任何你想要的方法).在方法中,您将使用security.context来设置查询的条件.您可以将条件直接传递给UserRepository :: getUsers()方法,也可以在UserService对象中构建DQL并将其传递给UserRepository.
> UserService :: getUsers()返回UserRepository :: getUsers()返回的任何内容.
这就是我喜欢处理这些情况的方法,但为了完整起见,您还可以在存储库中使用简单的setter注入.您可以通过实体管理器(而不是问题中的服务容器)获取存储库,只需调用$userRepository-> setSecurityContext($this-> get(‘security.context’)).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。