в цикле, отправляю мейл по каждому из кейсов и устанавливаю статус exported
Можно ли как-то красивее сделать, чтобы не флашить каждый раз?
$cases = $this->entityManager->getRepository(DieselCase::class)->findBy(['mandated' => '1', 'supplier' => 1277], null, 1);
foreach ($cases as $case) {
/** @var DieselCase $case */
$output->writeln('Case: ' . $case->getId());
$this->lawsuitMailService->sendLawsuitMail($case);
$case->setChamberExportStatus(CoreCase\ExportStatusEnum::STATUS_EXPORTED);
$case->setChamberExportDate(new \DateTime('now'));
$this->entityManager->flush();
}
Флашить за циклом
но ведь в $case каждый раз разный кейс
У тебя разные case, это разные сущности.
в переменной $case каждый раз новые сущности. поэтому если вынести flush за пределы цикла, зафлашится только последний. Нет?
хм. странно. сейчас посмотрю. Хотя не понимаю, как это может быть
в переменной да, но флашится же не переменная 🙂
почитайте паттерн unit of work и как он работает
Потому что доку не читал. Ты когда вытаскиваешь сущности, они хранятся в мапе. Любые изменения после этого отслеживаются. Флаш их за раз применяет.
Еще вот это можно: https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/reference/batch-processing.html
да уж не знаешь, что первым делом читать
все, целиком. пока дока не станет полностью понятной
Обсуждают сегодня