Метод 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,
который выполняет запрос и возвращает массив