Używam doctrine2 z Symfony2 i próbuję wykonać prostą kwerendę wybierającą:Doctrine2 [Syntax Error] Błąd: Oczekiwany dosłowne, dostał '-'
chcę uruchomić:
SELECT * FROM table WHERE status in (1, -1)
Kod PHP
$queryBuilder = $this->_em->createQueryBuilder();
$queryBuilder
->select('n')
->from('MyBundle:Table', 'n')
->where('n.status IN (1, -1)');
return $queryBuilder->getQuery()->getResult();
daje następujące wyjątki:
[Syntax Error] line 0, col 96: Error: Expected Literal, got '-'
Jest to definicja atrybutu w jednostce:
/**
* @var integer
*
* @ORM\Column(name="status", type="integer", nullable=true)
*/
private $status;
Jeśli używam tylko pozytywne numery wewnątrz in
argumentu, to będzie działać. Wyjątek występuje tylko w przypadku liczb ujemnych.
Co powoduje ten wyjątek?
Kreski są niedozwolone, gdyż mogą one być częścią ataku SQL injection. Pozbądź się kreski lub podziel liczbę ujemną na parametr. –