不止一对多关系 - 学说,Symfony

时间:2014-10-21 18:39:53

标签: php symfony doctrine-orm

我有两个表“RFQ”和“RFQItem”。 第一个ManyToMany关系我需要选择哪个RFQItems以RFQ形式添加到RFQ。 第二个ManyToMany关系我需要在创建新RFQ时创建新的RFQItem。

我已经配置了所有,但架构更新会引发错误:

The table with name 'rfqgroup.rfq_rfqitem' already exists.

实体:

/**
 * @ORM\ManyToMany(targetEntity="RFQItem")
 * @ORM\JoinColumn(referencedColumnName="id", nullable=true)
 */
protected $rfqitem;

/**
 * @ORM\ManyToMany(targetEntity="RFQItem", cascade={"persist"})
 * @ORM\JoinColumn(referencedColumnName="rfq_id", nullable=true)
 */
protected $rfq_item_title;

甚至可以建立这些关系吗?

1 个答案:

答案 0 :(得分:2)

您必须使用the @JoinTable attribute来确保“多对多”表具有唯一名称。

/**
 * @ORM\ManyToMany(targetEntity="RFQItem")
 * @ORM\JoinTable(name="rfq_rfqitem",
 *      joinColumns={@ORM\JoinColumn(name="rfq_item_id", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="rfqgroup_id", referencedColumnName="id")}
 * )
 */
public $rfqitem;

/**
 * @ORM\ManyToMany(targetEntity="RFQItem")
 * @ORM\JoinTable(name="rfq_rfqitem_title",
 *      joinColumns={@ORM\JoinColumn(name="rfq_item_title_id", referencedColumnName="rfq_id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="rfqgroup_id", referencedColumnName="id")}
 * )
 */
public $rfq_item_title;

您可能需要更正JoinColumnname的{​​{1}}属性,具体取决于您在每个实体中选择的变量名称。