我开始明白Symfony 2和Doctrine如何处理多对多的关系,但我仍然坚持一些事情,我似乎已经阅读了不同的意见。
假设我有一个Author实体和一个Book实体......它们之间有多对多的关系。
在我的数据库中,我用三个表来表示它,一个authors
表,一个books
表和一个authors_books
表(基本上只是将它们连接在一起。
在Symfony 2中,我是否还创建了一个AuthorsBooks
实体,其唯一目的是将作者和图书实体一起加入?或者,Symfony会为我处理这个问题吗?
答案 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指定应该使用哪个表来连接两个实体。