Выбор ответа Middle Symfony кратко спрашивают часто обновлено

persist и flush в Doctrine

Вопрос

Что делает $em->persist($order) в Doctrine?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Берёт сущность под Unit of Work, INSERT в flush(). persist лишь сообщает EntityManager о новой сущности.

Варианты ответа

  1. Сразу выполняет INSERT в отдельной транзакции
  2. Сохраняет все изменения всех сущностей в базу
  3. Берёт сущность под Unit of Work, INSERT в flush()правильный ответ
  4. Обновляет сущность актуальными данными из базы

Разбор

persist лишь сообщает EntityManager о новой сущности. При flush Unit of Work вычисляет изменения всех управляемых сущностей и выполняет SQL в транзакции. Для уже загруженных сущностей persist не нужен: изменения найдутся при flush. Обновление из базы делает refresh.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.