Doctrine 原则ORM:如何定义与n-n连接表的1-n关系

Doctrine 原则ORM:如何定义与n-n连接表的1-n关系,doctrine,Doctrine,所以,这有点复杂:我有两张表,比如猫和狗。 他们处于多对多关系中(可以称为友谊或其他什么),因此条令会自动为我创建一个带有适当字段的表猫狗。(默认情况下为rowid、cat\u id、dog\u id) 现在,假设我有第三个表,奖励,在那里我想奖励这些友谊中的一个。因此,这里我需要一个字段来引用猫狗中的一行。然而,由于这个表在我的模型之间并不存在,(Doctrine为我处理它)对此最优雅的解决方案是什么 最后,我希望在我的奖励模型中有两个字段,一个猫和一个狗,它们需要成为朋友 我正在使用注释驱动

所以,这有点复杂:我有两张表,比如猫和狗。 他们处于多对多关系中(可以称为
友谊
或其他什么),因此条令会自动为我创建一个带有适当字段的表
猫狗
。(默认情况下为
rowid、cat\u id、dog\u id

现在,假设我有第三个表,
奖励
,在那里我想奖励这些友谊中的一个。因此,这里我需要一个字段来引用猫狗中的一行。然而,由于这个表在我的模型之间并不存在,(Doctrine为我处理它)对此最优雅的解决方案是什么

最后,我希望在我的
奖励
模型中有两个字段,一个
和一个
,它们需要成为朋友


我正在使用注释驱动程序。

是什么阻止了您手动创建m:n表而不是让条令为您创建该表?

条令的目的是从E/R模式映射对象,并简化对对象连接的访问。因此,我认为条令自动提供的猫狗表是必要的。它简洁且符合其目的,即它提供了猫的所有狗的列表,反之亦然,提供了狗的所有猫的列表

因此,我可以得出结论,最好创建名为
Award
的第三个实体(除了
Cat
Dog
),它与
Cat
提供一对一的关系,与
Dog
提供另一对一的关系。使其与猫狗表保持一致只取决于您,默认情况下不是条令任务。例如,您可以使用一些级联持久化选项。 我相信这是最有效的解决方案


作为最后一句话,考虑每个表应该映射一个或多个实体之间的特定关系,并且实际上表<代码> CassSt狗e<代码>表示友谊关系,而表<代码>奖励>代码>将表示两个朋友之间的授予关系关系。这是“一刀切”的ORM的问题之一——在SQL中,一些琐碎且显而易见的东西一旦涉及到ORM,就会变得非常困难和混乱。抱歉打断一下,继续。我想应该可以使用条令,没有任何肮脏的解决办法。。。我只是不知道怎么做