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

Метод delete

Метод delete класса QueryBuilder формирует запрос на удаление записей. Первым параметром передаётся имя сущности (алиас), из которой нужно удалить данные. Метод возвращает объект QueryBuilder, поэтому его можно объединять в цепочку с другими методами, например, с where или setParameter.

Важно: метод delete создаёт DQL-запрос, который нельзя выполнить напрямую через execute без предварительного вызова getQuery.

Синтаксис

$qb->delete(string $entity)

Пример

Давайте удалим все записи из сущности Article:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function deleteAll(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $qb->delete(Article::class); $query = $qb->getQuery(); $query->execute(); return new Response('All articles deleted'); } } ?>

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

"All articles deleted"

Пример

Давайте удалим только те записи, у которых поле status равно 'draft':

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function deleteDrafts(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $qb->delete(Article::class, 'a') ->where('a.status = :status') ->setParameter('status', 'draft'); $query = $qb->getQuery(); $query->execute(); return new Response('Drafts deleted'); } } ?>

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

"Drafts deleted"

Пример

Давайте удалим записи, созданные раньше определённой даты:

<?php namespace AppController; use AppEntityArticle; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; class ArticleController extends AbstractController { public function deleteOld(EntityManagerInterface $em): Response { $qb = $em->createQueryBuilder(); $date = new DateTime('2020-01-01'); $qb->delete(Article::class, 'a') ->where('a.createdAt < :date') ->setParameter('date', $date); $query = $qb->getQuery(); $query->execute(); return new Response('Old articles deleted'); } } ?>

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

"Old articles deleted"

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

  • класс QueryBuilder,
    который создаёт DQL-запросы
  • метод where,
    который задаёт условие выборки
  • метод setParameter,
    который привязывает значение к параметру
  • метод getQuery,
    который возвращает объект Query для выполнения
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить