使用额外的列进行多对多的自我引用

时间:2013-08-14 11:24:25

标签: orm doctrine-orm many-to-many jointable

我正在使用学说&我在多对多自引用中有一些问题,它有一些额外的字段。 让我们描述我的场景: 我有一张名为Drug的表,毒品可能会互相冲突。在某些情况下可能会出现这种冲突。可能有一些解决方案。

我读过有关多对多关系的学说文件。它提到JoinTable有一些额外的文件是不好的。 那么这个问题的最佳解决方案是什么?

这是我的解决方案,但我不确定这是否是最好的。

class Drug{
..
/**
 * @var DrugConfilict
 * 
 * @ORM\OneToMany(targetEntity="DrugConfilict", mappedBy="drug1")
 */
private $drugConfilict1s;

/**
 * @var DrugConfilict
 * 
 * @ORM\OneToMany(targetEntity="DrugConfilict", mappedBy="drug2")
 */
private $drugConfilict2s;
}

class DrugConfilict
{
/**
 * @var string
 *
 * @ORM\Column(name="confilict_conditions", type="text", nullable=true)
 */
private $confilictConditions;

/**
 * @var string
 *
 * @ORM\Column(name="what_should_do", type="text", nullable=true)
 */
private $whatShouldDo;

/**
 * @var Drug
 * 
 * @ORM\ManyToOne(targetEntity="Drug", inversedBy="drugConfilict1s")
 * @ORM\JoinColumn(name="drug1_id", referencedColumnName="id")
 */
private $drug1;

/**
 * @var Drug
 * 
 * @ORM\ManyToOne(targetEntity="Drug", inversedBy="drugConfilict2s")
 * @ORM\JoinColumn(name="drug2_id", referencedColumnName="id")
 */
private $drug2;
}

感谢您的回答:)

1 个答案:

答案 0 :(得分:0)

您提供的解决方案是正确的。也许如果你能描述实际冲突的本质,它们可能是一个更好的数据模型或数据处理。