РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
3 of 258 menu

Метод flush класса EntityManager

Метод flush класса EntityManager синхронизирует состояние объектов, находящихся под управлением Doctrine, с базой данных. Он выполняет все накопленные SQL-запросы (INSERT, UPDATE, DELETE), которые были запланированы после вызовов persist или remove. Метод не принимает обязательных параметров, но может принимать один объект сущности, чтобы ограничить область синхронизации.

Синтаксис

$em->flush($entity = null);

Пример

Давайте создадим сущность, сохраним её через persist и применим изменения к базе данных с помощью flush:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/create', name: 'article_create')] public function create(EntityManagerInterface $em): Response { $article = new Article(); $article->setTitle('article'); $article->setText('abcde'); $em->persist($article); $em->flush(); return new Response('saved'); } } ?>

Результат выполнения кода:

"saved"

Пример

Давайте обновим существующую сущность и сохраним изменения:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/update/{id}', name: 'article_update')] public function update(int $id, EntityManagerInterface $em): Response { $article = $em->getRepository(Article::class)->find($id); if (!$article) { return new Response('not found'); } $article->setTitle('updated'); $em->flush(); return new Response('updated'); } } ?>

Результат выполнения кода для существующей записи:

"updated"

Пример

Давайте удалим сущность и применим удаление к базе данных:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article/delete/{id}', name: 'article_delete')] public function delete(int $id, EntityManagerInterface $em): Response { $article = $em->getRepository(Article::class)->find($id); if (!$article) { return new Response('not found'); } $em->remove($article); $em->flush(); return new Response('deleted'); } } ?>

Результат выполнения кода:

"deleted"

Смотрите также

  • класс EntityManager,
    который управляет сущностями Doctrine
  • метод persist,
    который планирует сохранение сущности
  • метод remove,
    который планирует удаление сущности
  • метод find,
    который находит сущность по идентификатору
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить