[英]Doctrine middleware do not make flush
我的 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());
}
現在我從 controller 發送這個命令:
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
上的自動刷新不起作用嗎? 我錯過了什么?
final class UpdateUserHandler implements CommandHandlerInterface
{
/**
* @var Users
*/
private Users $users;
private EntityManagerInterface $em;
public function __construct(Users $users, EntityManagerInterface $em)
{
$this->users = $users;
$this->em = $em;
}
public function __invoke(UpdateUser $command)
{
$user = $command->getUser();
$user->setName($command->getName());
$this->em->flush();
}
}
更好地顯式調用flush方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.