В текущем приложении мы следуем стилю DDD и зависим от DDD, у нас есть совокупная область и мы не можем использовать другие агрегаты в этой области (мы можем использовать только идентификаторы других агрегатов, если нам нужно создать отношения).
Пример: у нас есть совокупность пользователей и совокупность средств массовой информации. У пользователя может быть значок, который относится к средствам массовой информации, но зависит от DDD. Я не могу сделать его похожим на
/**
* @OneToOne(targetEntity="Media")
* @JoinColumn(name="icon_id", referencedColumnName="id")
*/
private $icon;
как в таком случае, мне нужно передать целую сущность Media Пользователю, которая нарушает правило DDD.
Таким образом, чтобы следовать правилам DDD, я сделал это просто как
/**
* @var MediaId
*
* @ORM\Column(type="id", nullable=true)
*/
private $iconid;
, но это значит, что мы можемпередать любой идентификатор даже не существовало.Конечно, я могу запросить БД, чтобы проверить, существует ли Media, но опять-таки он нарушает правило DDD, поскольку мы не можем делать никаких действий с Media Aggregate, когда имеем дело с User aggregate.
Так что вопрос в том, могу ли якак-то скажите доктрине добавить внешний ключ без создания ассоциации?Или, может быть, мне нужно добавить внешний ключ вручную через миграции?