Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
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 для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить