В доктрине существует разделение между операциями Persist () и flush () . Похоже, всякий раз, когда вы хотите вставить/обновить свою сущность, вы должны вызывать два метода один за другим. И большинство разработчиков делают это таким образом. Но мне интересно, было ли это предназначено для использования таким образом. < /P>
Большую часть времени я вижу репозитории, подобные этим: < /p>
Код: Выделить всё
class EntityRepo extends ServiceEntityRepository
{
public function save(Entity $entity): void
{
$this->getEntityManager()->persist($entity);
$this->getEntityManager()->flush();
}
)
И этот подход имеет большой недостаток, даже если оставить словесность в стороне-Call to flush () будет синхронизировать
All не засеченные сущности с базой данных, а не только тот, который мы сохраняем сейчас.
Для ограничения синхронизации только одной сущностью, но этот подход был устарел доктриной. И это хорошо придерживается «функциональной» идеи сделать доменное ядро «чистым» любых побочных эффектов: мы просто перемещаем все побочные эффекты за пределами кода домена. Я ошибаюсь? Какие недостатки имеют такой подход? Несвязанные объекты.
Также я попытался вызовать flush () один раз в конце «бизнес -транзакции», например, в контроллере или в промежуточном программном обеспечении, но выглядит так, как будто этот подход является непопулярным, и я боюсь, что что -то неправильно понял.
Подробнее здесь:
https://stackoverflow.com/questions/771 ... f-doctrine