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

Метод createQueryBuilder класса Connection

Метод createQueryBuilder класса Connection создаёт и возвращает объект QueryBuilder. Он позволяет строить SQL-запрос по частям: задавать выборку, таблицу, условия, сортировку и лимит. Первым параметром передаётся псевдоним таблицы, вторым - сама таблица. Метод доступен как в миграциях, так и в сервисах, куда внедряется соединение с базой данных.

Синтаксис

public function createQueryBuilder(string $alias, string $table): QueryBuilder

Пример

Давайте создадим конструктор запроса и выберем все строки из таблицы article:

<?php namespace App\Controller; use Doctrine\DBAL\Connection; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(Connection $connection): Response { $qb = $connection->createQueryBuilder(); $qb->select('*') ->from('article', 'a'); $res = $qb->fetchAllAssociative(); return new Response(json_encode($res)); } } ?>

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

[{"id":"1","title":"article 1"},{"id":"2","title":"article 2"}]

Пример

Давайте добавим условие отбора через метод where и отсортируем результат:

<?php namespace App\Controller; use Doctrine\DBAL\Connection; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(Connection $connection): Response { $qb = $connection->createQueryBuilder(); $qb->select('id', 'title') ->from('article', 'a') ->where('a.id > :id') ->setParameter('id', 1) ->orderBy('a.title', 'ASC') ->setMaxResults(10); $res = $qb->fetchAllAssociative(); return new Response(json_encode($res)); } } ?>

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

[{"id":"2","title":"article 2"}]

Пример

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

<?php namespace App\Migrations; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; class Version20240101000000 extends AbstractMigration { public function up(Schema $schema): void { $qb = $this->connection->createQueryBuilder(); $qb->update('article', 'a') ->set('a.title', ':title') ->where('a.id = :id') ->setParameter('title', 'article') ->setParameter('id', 1); $qb->executeStatement(); } public function down(Schema $schema): void { } } ?>

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

"article"

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

  • класс Connection,
    который представляет соединение с базой данных
  • метод executeQuery,
    который выполняет SELECT-запрос
  • метод executeStatement,
    который выполняет INSERT, UPDATE или DELETE
  • метод fetchAllAssociative,
    который возвращает все строки выборки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить