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

Метод getSQL класса Query

Метод getSQL принадлежит классу Query из Doctrine ORM и возвращает SQL-строку, сгенерированную на основе DQL-запроса. Метод не принимает параметров и не выполняет запрос к базе данных - он лишь показывает, какой SQL будет отправлен в СУБД при вызове методов выполнения, например getResult или getArrayResult.

Метод удобен для отладки: с его помощью можно проверить, как Doctrine переводит DQL в SQL, какие псевдонимы таблиц и колонок используются, а также корректно ли построены условия и соединения.

Синтаксис

public function getSQL(): string

Пример

Давайте получим SQL для простого DQL-запроса, выбирающего все записи из сущности Article:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(EntityManagerInterface $em): Response { $dql = 'SELECT a FROM App\Entity\Article a'; $query = $em->createQuery($dql); $sql = $query->getSQL(); return new Response($sql); } } ?>

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

"SELECT a0_.id AS id_0, a0_.title AS title_1, a0_.text AS text_2 FROM article a0_"

Пример

Давайте получим SQL для DQL-запроса с параметром и условием:

<?php namespace App\Controller; use App\Entity\Article; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; class ArticleController extends AbstractController { public function index(EntityManagerInterface $em): Response { $dql = 'SELECT a FROM App\Entity\Article a WHERE a.title = :title'; $query = $em->createQuery($dql); $query->setParameter('title', 'article'); $sql = $query->getSQL(); return new Response($sql); } } ?>

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

"SELECT a0_.id AS id_0, a0_.title AS title_1, a0_.text AS text_2 FROM article a0_ WHERE a0_.title = ?"

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

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