教义一对多没有加入表

时间:2011-10-21 13:16:18

标签: php doctrine

我正在使用Doctrine,我想知道如果不使用连接表,我是否可以拥有一对多关系?

2 个答案:

答案 0 :(得分:5)

取决于您是希望它是单向还是双向。

单向一对多只能通过连接表进行,出于“意识形态”的原因,来自Java的休眠:

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-unidirectional-with-join-table

想象一下,您有一个包含许多产品的类别,并且您需要单向关系 - 即类别了解许多产品,但产品不了解类别。

如果将“category_id”字段放入Product表中,您将使产品表“意识到”它已连接到类别。如果不改变Product表,你将无法删除这种关系 - 这意味着它不是真正的单向。

但是,如果您在单独的联接表中保持类别和产品之间的关系,您可以放弃它,而产品甚至不会注意到某些内容已发生变化。

答案 1 :(得分:0)

只有m:n关系才需要连接表。