如何映射多个n:m原则关系


How to map multiple n:m doctrine relationships

这是我的关系:https://i.stack.imgur.com/HYMFJ.png

你好,我有这个关系,我在学说上映射了一个关系(List_has_Doc),与@ manymany有双向关系,但我如何映射其他两个?

谢谢。

根据需要使用尽可能多的@ manymany关系。比如你可以输入

/**
 * @Entity
 * @Table(name="list")
 */
class List{
   //other definitions
   /**
    * @ManyToMany(targetEntity="Doc", invertedBy="flaggedDocList")
    * @JoinTable(name="List_flagged_Doc",
    *      joinColumns={@JoinColumn(name="flagged_doc_id", referencedColumnName="id")},
    *      inverseJoinColumns={@JoinColumn(name="flagged_list_id", referencedColumnName="id")}
    * )
    */
    protected $flaggedDocs;

   /**
    * @ManyToMany(targetEntity="Doc", invertedBy="requestedDocList")
    * @JoinTable(name="List_requested_Doc",
    *      joinColumns={@JoinColumn(name="requested_doc_id", referencedColumnName="id")},
    *      inverseJoinColumns={@JoinColumn(name="requested_list_id", referencedColumnName="id")}
    * )
    */
    protected $requestedDocs;
   /**
    * @ManyToMany(targetEntity="Doc", invertedBy="ownedDocList")
    * @JoinTable(name="List_owned_Doc",
    *      joinColumns={@JoinColumn(name="owned_doc_id", referencedColumnName="id")},
    *      inverseJoinColumns={@JoinColumn(name="owned_list_id", referencedColumnName="id")}
    * )
    */
    protected $ownedDocs;
}

/**
 * @Entity
 * @Table(name="doc")
 */
class Doc{
    //...other definitions
    /**
     * @ManyToMany(targetEntity="List", mappedBy="flaggedDocs")
     */
     protected $flaggedDocList;
    /**
     * @ManyToMany(targetEntity="List", mappedBy="requestedDocs")
     */
     protected $requestedDocList;

    /**
     * @ManyToMany(targetEntity="List", mappedBy="ownedDocs")
     */
     protected $ownedDocList;
}

可能需要在Docs类中指定@JoinTable,现在无法测试。