我使用Doctrine ORM 2来创建我的模型层。由于我的项目有点仅仅是一个函数重复的基本CRUD,我想创建类似于我的其他实体继承的基本模型,然后我可以为我的所有模型创建函数(例如find all),从而使它成为可能重复性较低。
似乎在Doctrine中,存储库是我最好的选择。是否可以为我的所有实体创建一个存储库,特别是因为它们共享许多常用方法?
答案 0 :(得分:0)
您不能对所有实体使用单个类,但Doctrine2中有一些类继承选项。其中之一是所谓的映射超类,您可以使用它为您的实体创建基本模型。您可以在the Doctrine documentation chapter 6.1. Mapped Superclasses中了解相关信息。
但是有一些限制,但在文档中对此进行了详细解释:
映射的超类不能是实体,它不是可查询的,并且由映射的超类定义的持久关系必须是单向的(仅具有拥有方)。这意味着根本不可能在映射的超类上进行一对多关联。此外,只有当映射的超类目前仅在一个实体中使用时,才能实现多对多关联。为了进一步支持继承,必须使用单个或连接表继承功能。
答案 1 :(得分:-1)
只需阅读http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/getting-started.html。
Doctrine已经为您定义了许多常用方法。 顺便说一句,你似乎是ORM的新手,所以 donot 尝试“为我的其他实体创建基础模型”。
花些时间了解Doctrine / ORM,否则你会感到痛苦, ORM / Doctrine不是新手友好框架