我有一个名为forums
与后续的场结构表:主义态关联
OBJECT_TYPE - > [组|页面|锦标赛| etc ..](可能值,每个元素都有自己的表格)
object_id - > [group's id |页面的ID |锦标赛ID |等等。(ID OBJECT_TYPE)
id_forum,4.name等
然后,我有以下表格:Group
,Page
,Tournament
等。
是它这可能与教条实现吗?
我有一个名为forums
与后续的场结构表:主义态关联
OBJECT_TYPE - > [组|页面|锦标赛| etc ..](可能值,每个元素都有自己的表格)
object_id - > [group's id |页面的ID |锦标赛ID |等等。(ID OBJECT_TYPE)
id_forum,4.name等
然后,我有以下表格:Group
,Page
,Tournament
等。
是它这可能与教条实现吗?
我认为你正在寻找的东西可以通过继承完成。
检查http://www.doctrine-project.org/docs/orm/2.0/en/reference/inheritance-mapping.html的详细说明。
我有一个类似的问题。我已经发布了一个关于如何在this post的Doctrine 2.2中实现多态关联的完整示例。
这应该是一个评论,但我的声誉太低,对不起。
不幸的是,多态关联与CTI(类表继承)不完全相同:CTI要求所有子类具有相同标识的父表。
CTI可能在大多数情况下工作,但如果您想在已有自己的ID和/或可能具有不同ID类型的现有实体之间创建多态关联,则可能会出现问题。
除了CTI需要在父表中为每个子类创建一个对多态关联无用的记录。多态关联不应该要求任何表,它应该只用(id,type)条件连接现有的表。为了简单/性能的原因,我认为Doctrine需要父表。
当CTI不是解决方案时,我建议模拟Repository级别的多态关联,即创建一个具有$ type属性的抽象Repository,并实现一个可以自动将当前查询连接到目标表的polymorphicJoin方法id /类型条件。然后用您的子类Repositories扩展抽象的Repository,并在find/select方法需要时调用polymorphicJoin方法。
如果这种关联是在教义中实现的,那将是非常棒的。