website/errors/doctrine.dql.md
<?php declare(strict_types = 1);
use Doctrine\ORM\EntityManagerInterface;
function getUsers(EntityManagerInterface $em): void
{
$query = $em->createQuery('SELCT u FROM App\Entity\User u');
}
This error is reported by phpstan/phpstan-doctrine.
The DQL (Doctrine Query Language) string passed to EntityManager::createQuery() or built via QueryBuilder contains a syntax error or references an unknown entity, field, or association. Doctrine parses the DQL at runtime, and invalid DQL will cause a QueryException. PHPStan validates the DQL statically to catch these errors before runtime.
In this example, SELCT is a typo for SELECT.
Fix the DQL syntax or entity/field references:
<?php declare(strict_types = 1);
use Doctrine\ORM\EntityManagerInterface;
function getUsers(EntityManagerInterface $em): void
{
- $query = $em->createQuery('SELCT u FROM App\Entity\User u');
+ $query = $em->createQuery('SELECT u FROM App\Entity\User u');
}
For complex queries, consider using the QueryBuilder API which provides IDE autocompletion and helps prevent syntax errors:
<?php declare(strict_types = 1);
use Doctrine\ORM\EntityManagerInterface;
function getUsers(EntityManagerInterface $em): void
{
$query = $em->createQueryBuilder()
->select('u')
->from('App\Entity\User', 'u')
->getQuery();
}