Доктрина «многие ко многим» с дополнительными столбцами

я работаю с доктриной, и у меня есть проблема с самоссылкой «многие ко многим», которая имеет некоторые дополнительные поля. давайте опишем мой сценарий: у меня есть таблица с именем «Наркотики», наркотики могут конфликтовать друг с другом, и эти конфликты могут возникать при некоторых условиях и могут иметь некоторые решения.

я читал доктринальные документы об отношениях «многие ко многим», и упоминалось, что для 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;
}

спасибо за ваши ответы :)


person parisssss    schedule 14.08.2013    source источник


Ответы (1)


Предоставленное вами решение верное. Возможно, если вы сможете описать природу фактического конфликта, это может стать лучшей моделью данных или обработкой данных для него.

person Flip    schedule 14.08.2013
comment
спасибо за Ваш ответ! что вы подразумеваете под 'описанием сути реального конфликта'? - person parisssss; 18.08.2013
comment
В зависимости от того, какие конфликты существуют в реальном мире, его лучше смоделировать как One Conflict to Many Drugs. - person Flip; 18.08.2013