0

私のconfig/messanger.yamlは次のようになります:

framework:
    messenger:
        default_bus: command.bus
        buses:
            command.bus:
                middleware: 'Symfony\Bridge\Doctrine\Messenger\DoctrineTransactionMiddleware'
            query.bus: ~

コマンドのコマンド ハンドラはUpdateUser次のようになります。

final class UpdateUserHandler implements CommandHandlerInterface
{
    /**
     * @var Users
     */
    private Users $users;

    public function __construct(Users $users)
    {
        $this->users = $users;
    }

    public function __invoke(UpdateUser $command)
    {
        $user = $command->getUser();
        $user->setName($command->getName());
    }

そして今、コントローラーからこのコマンドをディスパッチしています:

final class UserController extends AbstractController
{
    private CommandBus $commandBus;

    public function __construct(CommandBus $commandBus)
    {
        $this->commandBus = $commandBus;
    }

    public function __invoke(Request $request, User $user): Response
    {
        $this->commandBus->dispatch(new UpdateUser($user, $name));

        return $this->render('user.html.twig', []);
    }
}

ミドルウェアの自動フラッシュがDoctrineTransactionMiddleware機能しない理由を教えてください。私は何が欠けていますか?

4

1 に答える 1