DDD:从事件创建的聚合根

时间:2018-08-07 10:48:05

标签: php domain-driven-design aggregateroot domain-events

我正在尝试为季节,比赛等管理申请。 我还有下一个问题。我可以从另一个聚合根创建聚合根吗?

我要自我解释,我有下一个场景,一个赛季可以进行很多比赛。比赛可能没有季节就存在,但是比赛是复杂的,有很多阶段,没有比赛就不可能存在一个阶段。

好吧,我当时在考虑从竞争汇总中创建一个阶段,但是在我的领域中,这个阶段具有个性,身份和很多行为。那让我认为这是一个聚合根。

做一个好办法可以做些什么吗?

public class Competition extends AggregateRoot 
{
   private $phases;

   public function addPhase(PhaseId $phaseId, PhaseOrder $phaseOrder, PhaseType $phaseType) 
   {
       // ... Add to list

       $this->recordEvent(new PhaseWasCreated([
          'phaseId' => $phaseId,
          'phaseType' => $phaseType
       ]));
   }
}

然后,响应此事件,在他的上下文中创建一个阶段。

或者最好在我的阶段上下文中使用一个命令来创建一个阶段并参考比赛。

0 个答案:

没有答案