教义一对多无联接表

Bla*_*ite 4 php doctrine

我正在使用Doctrine,并且想知道如果不使用联接表就可以建立一对多关系吗?

dr.*_*cre 6

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

出于“意识形态”的原因,单向一对多只能通过连接表来完成,这是从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甚至不会注意到某些更改。