是什么导致了预期的字面错误?
What is causing the expected literal error?
我有一个语法错误的查询。这是错误!
string(63) "[Syntax Error] line 0, col 57: Error: Expected Literal,
got 'd'"
public function getDomain(string $country)
{
try {
return $this->createQueryBuilder('d')
->where(':country NOT IN (d.blocked_countries)')
->setParameter('country', $country)
->setMaxResults(1)
->getQuery()
->getSingleResult()
;
} catch (\Exception $exception) {
return $exception->getMessage();
}
}
我们不能在这种情况下应用 IN
运算符,因为学说将 array type
存储为字符串,其中 php serialize()
。所以你可以这样做
$qb = $this->createQueryBuilder('d');
$qb
->where(
$qb->expr()->like('d.blocked_countries', "'%$country%'")
)
->setMaxResults(1)
->getQuery()
->getOneOrNullResult()
;
谢谢,我这样做是因为 -> setParameter 更安全
{
try {
return $this->createQueryBuilder('d')
->where('d.blocked_countries NOT LIKE :code')
->setParameter('code', "%$code%")
->setMaxResults(1)
->getQuery()
->getOneOrNullResult()
;
} catch (\Exception $exception) {
return null;
}
}
我有一个语法错误的查询。这是错误!
string(63) "[Syntax Error] line 0, col 57: Error: Expected Literal, got 'd'"
public function getDomain(string $country)
{
try {
return $this->createQueryBuilder('d')
->where(':country NOT IN (d.blocked_countries)')
->setParameter('country', $country)
->setMaxResults(1)
->getQuery()
->getSingleResult()
;
} catch (\Exception $exception) {
return $exception->getMessage();
}
}
我们不能在这种情况下应用 IN
运算符,因为学说将 array type
存储为字符串,其中 php serialize()
。所以你可以这样做
$qb = $this->createQueryBuilder('d');
$qb
->where(
$qb->expr()->like('d.blocked_countries', "'%$country%'")
)
->setMaxResults(1)
->getQuery()
->getOneOrNullResult()
;
谢谢,我这样做是因为 -> setParameter 更安全
{
try {
return $this->createQueryBuilder('d')
->where('d.blocked_countries NOT LIKE :code')
->setParameter('code', "%$code%")
->setMaxResults(1)
->getQuery()
->getOneOrNullResult()
;
} catch (\Exception $exception) {
return null;
}
}