实现CQRS时如何在控制器中获取创建的对象

问题描述 投票:1回答:1

我正在评估CQRS模式,并想知道在同一个操作中获取由命令创建的实体的最佳方法是什么,以便我可以在视图中呈现它。

我能想到的两个选择是。

1)在控制器中创建一个id,并使用命令发送它,通过id找到它来获取实体。 2)创建实体的实例并使用命令发送它,以便在填充后对其进行引用

示例代码

public function createEntityAction(array $data) {
    $eventDispatcher = $this->get('event_dispatcher');

    $eventDispatcher->dispatch(
        CreateEntityHandler::name, // Handler
        new Entity($data) // Command
    );

    // Placeholder //
      $entity = get-the-created-entity
    // // 

    return $this->view($entity, Response::HTTP_OK);    
}
php cqrs
1个回答
1
投票

第二种选择不是一种选择。 “实体创建”,实际上是一个业务操作,是一个命令处理。

一般来说,发送命令的人(其处理程序创建实体)应该发送实体id。以何种方式生成身份只是一个实现问题。

通常,命令处理程序要么执行他们想要执行的操作,也不返回任何(或ACK)或抛出(或NAK)。

© www.soinside.com 2019 - 2024. All rights reserved.