Как отобразить несколько отношений доктрины n: m - PullRequest
0 голосов
/ 09 августа 2011

Это мои отношения: http://i.stack.imgur.com/HYMFJ.png

Здравствуйте, у меня есть это отношение, я сопоставил одно отношение (List_has_Doc) в доктрине с двусторонним отношением с @ManyToMany, но как я могу отобразить два других?

Спасибо.

1 Ответ

0 голосов
/ 09 августа 2011

Просто используйте столько связей @ManyToMany, сколько вам нужно. Таким образом, вы могли бы иметь что-то вроде

/**
 * @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;
}

Может также потребоваться указать @JoinTable в классе Docs, не могу проверить это сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...