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