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

Метод remove

Метод remove класса EntityManager помечает переданную сущность на удаление. Первым параметром передаётся объект сущности, который нужно удалить из базы данных. Сам по себе метод remove не выполняет SQL-запрос DELETE сразу - он лишь помещает сущность в очередь на удаление. Чтобы изменения попали в базу данных, после вызова remove необходимо вызвать метод flush того же менеджера сущностей.

Синтаксис

$em->remove($entity);

Пример

Давайте удалим сущность Article с идентификатором 1:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function delete(EntityManagerInterface $em): Response { $article = $em->find(Article::class, 1); $em->remove($article); $em->flush(); return new Response('deleted'); } } ?>

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

"deleted"

Пример

Давайте удалим сущность, полученную из репозитория:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function delete(EntityManagerInterface $em): Response { $repository = $em->getRepository(Article::class); $article = $repository->find(1); $em->remove($article); $em->flush(); return new Response('article removed'); } } ?>

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

"article removed"

Пример

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

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function delete(EntityManagerInterface $em): Response { $repository = $em->getRepository(Article::class); $articles = $repository->findBy(['active' => false]); foreach ($articles as $article) { $em->remove($article); } $em->flush(); return new Response('removed'); } } ?>

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

"removed"

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

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