Symfony2 - Doctrine2 - MySql:复合FK和PK

时间:2014-06-12 03:14:17

标签: mysql symfony doctrine-orm foreign-keys primary-key

我正在使用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

非常感谢您的帮助。

1 个答案:

答案 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"]