【问题标题】:Extend repository classes in Symfony2 bundles在 Symfony2 包中扩展存储库类
【发布时间】:2017-02-24 00:44:50
【问题描述】:

假设我使用了第三方博客包,其中有一个BlogRepository 类,我想向这个存储库类添加更多方法。我尝试使用官方文档中描述的包继承,但它似乎无法在实体存储库类上完成。

我想的原因是由于$this->getDoctrine()->getRepository('MyBundle:Entity')这个方法需要在你自己的包中声明实体类。

有人知道怎么做吗?我认为必须有一种方法可以通过 DI 来实现,因为将自己的方法添加到存储库类应该是一种常见的做法。

非常感谢

【问题讨论】:

    标签: symfony


    【解决方案1】:

    非常有趣..您使用的是哪个捆绑包,为什么不能扩展它的 Repository 类?在我的实践中,只有一种情况我需要扩展第三方包的存储库类(我使用 DoctrineExtensions 中的 NestedTree 扩展和 StofDoctrineExtensionsBundle),我只是这样做了:

    class TermRepository extends NestedTreeRepository {
    ...
    }
    

    【讨论】:

    • 别忘了把use Path\To\NestedTreeRepository ;-)
    • 如果你只是扩展存储库类,你如何实例化你的自定义类?我假设你需要通过 $this->getDoctrine()->getRepository('MyBundle:Entity') 来做,对吗?问题是您的自定义捆绑包不会从父捆绑包中找到“实体”。
    【解决方案2】:

    调用您的存储库,如服务->get("service.aliace")

    【讨论】:

    • 您好,欢迎来到 Stackoverflow。请在您的答案中添加更多描述,以便对其他用户更有价值。
    猜你喜欢
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    相关资源
    最近更新 更多