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

Метод update

Метод update класса QueryBuilder создаёт DQL-запрос на обновление записей в базе данных. Первым параметром передаётся имя сущности, которую нужно обновить. Далее цепочкой вызывается метод set, который задаёт новые значения полей, и метод where, который ограничивает набор обновляемых записей.

Синтаксис

$qb->update(className)

Пример

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

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; class ArticleRepository extends EntityRepository { public function updateAllText(): void { $qb = $this->createQueryBuilder('a'); $qb->update(Article::class) ->set('a.text', ':text') ->setParameter('text', 'abcde'); $qb->getQuery()->execute(); } } ?>

Пример

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

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; class ArticleRepository extends EntityRepository { public function updateTextById(int $id): void { $qb = $this->createQueryBuilder('a'); $qb->update(Article::class) ->set('a.text', ':text') ->where('a.id = :id') ->setParameter('text', 'hello') ->setParameter('id', $id); $qb->getQuery()->execute(); } } ?>

Пример

Давайте обновим сразу несколько полей: text и integer:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; class ArticleRepository extends EntityRepository { public function updateTextAndInteger(int $id): void { $qb = $this->createQueryBuilder('a'); $qb->update(Article::class) ->set('a.text', ':text') ->set('a.integer', ':integer') ->where('a.id = :id') ->setParameter('text', 'abcde') ->setParameter('integer', 5) ->setParameter('id', $id); $qb->getQuery()->execute(); } } ?>

Пример

Давайте посмотрим DQL-запрос, который строит метод update:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; class ArticleRepository extends EntityRepository { public function showDQL(): void { $qb = $this->createQueryBuilder('a'); $qb->update(Article::class) ->set('a.text', ':text') ->where('a.id = :id') ->setParameter('text', 'abcde') ->setParameter('id', 1); echo $qb->getDQL(); } } ?>

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

"UPDATE App\Entity\Article a SET a.text = :text WHERE a.id = :id"

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

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