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

Метод set класса QueryBuilder

Метод set класса QueryBuilder используется для построения UPDATE-запросов. Первым параметром передаётся имя поля (или SQL-выражение), вторым - новое значение. Метод возвращает сам объект QueryBuilder, что позволяет выстраивать цепочку вызовов. Обычно set применяется вместе с методами update и where.

Синтаксис

$qb->set(string $key, mixed $value);

Пример

Давайте обновим поле title у записи с id равным 1:

<?php namespace App\Repository; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\QueryBuilder; class ArticleRepository { public function __construct( private EntityManagerInterface $em ) { } public function updateTitle(int $id, string $title): QueryBuilder { $qb = $this->em->createQueryBuilder(); $qb->update('App\Entity\Article', 'a') ->set('a.title', ':title') ->where('a.id = :id') ->setParameter('title', $title) ->setParameter('id', $id); return $qb; } } ?>

Результат выполнения метода вернёт объект QueryBuilder, готовый к вызову getQuery и execute.

Пример

Давайте обновим сразу несколько полей одной записью, используя цепочку вызовов set:

<?php namespace App\Repository; use Doctrine\ORM\EntityManagerInterface; class ArticleRepository { public function __construct( private EntityManagerInterface $em ) { } public function updateArticle(int $id, string $title, string $text): int { $qb = $this->em->createQueryBuilder(); $qb->update('App\Entity\Article', 'a') ->set('a.title', ':title') ->set('a.text', ':text') ->where('a.id = :id') ->setParameter('title', $title) ->setParameter('text', $text) ->setParameter('id', $id); return $qb->getQuery()->execute(); } } ?>

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

1

Пример

Давайте передадим в метод set готовое SQL-выражение вместо параметра-заглушки:

<?php namespace App\Repository; use Doctrine\ORM\EntityManagerInterface; class ArticleRepository { public function __construct( private EntityManagerInterface $em ) { } public function incrementViews(int $id): int { $qb = $this->em->createQueryBuilder(); $qb->update('App\Entity\Article', 'a') ->set('a.views', 'a.views + 1') ->where('a.id = :id') ->setParameter('id', $id); return $qb->getQuery()->execute(); } } ?>

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

1

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

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