我正在使用Symfony2,Doctrine2和MySql。我有两张桌子:评论和主题。 Review有一个复合PK(idReview和idHotel)。主题只有一个PK(idTopic)。我想在这两个表之间创建多对多关系。得到的连接表(例如Review_Topic)必须具有由三个FK组成的复合PK(idReview,idHotel,idTopic)。当我更新架构时,MySql给出了错误1005,无法创建表,错误150因为FK(idReview,idHotel)。遵循包含多对多关系的Review和Topic的Yaml配置:
Review:
...
manyToMany:
topics:
targetEntity: Topic
inversedBy: reviews
joinTable:
name: reviews_topics
joinColumns:
idReview:
referencedColumnName: idReview
idHotel:
referencedColumnName: idHotel
inverseJoinColumns:
topic_id:
referencedColumnName: idTopic
fields:
score:
type: integer
Topic:
...
manyToMany:
reviews:
targetEntity: Review
mappedBy: topics
非常感谢您的帮助。
答案 0 :(得分:1)
尝试此操作以更改您的评论实体
Review:
...
manyToMany:
topics:
targetEntity: Topic
joinTable:
name: reviews_topics
joinColumns:
review_id:
referencedColumnName: idReview
inverseJoinColumns:
topic_id:
referencedColumnName: idTopic
inversedBy: reviews
cascade: ["persist", "remove"]