多对多关系是否需要在Symfony 2 / Doctrine中使用“加入实体”?

时间:2012-05-07 23:36:56

标签: symfony doctrine-orm

我开始明白Symfony 2和Doctrine如何处理多对多的关系,但我仍然坚持一些事情,我似乎已经阅读了不同的意见。

假设我有一个Author实体和一个Book实体......它们之间有多对多的关系。

在我的数据库中,我用三个表来表示它,一个authors表,一个books表和一个authors_books表(基本上只是将它们连接在一起。

在Symfony 2中,我是否还创建了一个AuthorsBooks实体,其唯一目的是将作者和图书实体一起加入?或者,Symfony会为我处理这个问题吗?

2 个答案:

答案 0 :(得分:2)

如果只有作者和书籍的关联,您不需要创建AuthorsBooks实体。

现在有两个选项,单向或双向。您将能够直接在Doctrine2文档here

中找到更多信息

对于单向,你会有类似的东西(yml):

Author:
  type: entity
  manyToMany:
    bookList:
      targetEntity: Group
      joinTable:
        name: authors_books
          joinColumns:
            user_id:
              referencedColumnName: id
          inverseJoinColumns:
            book_id:
              referencedColumnName: id

答案 1 :(得分:1)

Symfony与此毫无关系,严格来说是Doctrine的事情。但是,不,您不必创建AuthorsBooks实体。您所要做的就是正确配置Doctrine,即使用@JoinTable annotation指定应该使用哪个表来连接两个实体。