我有以下查询:
$query = $qb->select($qb->expr()->substring("p.website",1,5).'AS country)
->from("AppBundle\Entity\Image" ,"p")
->where("p.aktuellste = 1")
->andWhere($qb->expr()->in('country',':country'))
->setParameter(':country','de')
->orderBy('country','DESC')
->getQuery();
E.g。我想选择网站substring(1,2)
为de
的所有行。但country
条款中WHERE
是Doctrine的未知列。抛出以下异常:
SQLSTATE [42S22]:未找到列:1054未知列'sclr_0' 'where子句
有趣的是,Doctrine知道country
子句中的ORDER BY
列。
有人知道如何解决这个问题吗?
答案 0 :(得分:1)
如果要搜索别名列,则需要使用HAVING
,因为它位于计算字段上。将它放在WHERE
子句中假设您的Image
实体中有一个名为country
的成员,而不是。{/ p>
$query = $qb
->select($qb->expr()->substring('p.website', 1, 5).'AS country')
->from('AppBundle\Entity\Image', 'p')
->andWhere('p.aktuellste = 1')
->andHaving($qb->expr()->in('country', ':country'))
->setParameter(':country', 'de')
->orderBy('country', 'DESC')
->getQuery()
;
有关详细信息,请参阅MySQL Handling of Group By:
MySQL扩展允许在HAVING子句中使用别名 对于汇总列
答案 1 :(得分:0)
您的查询中存在一些语法错误,但不确定这会解决您的问题。 请试试这个:
console.log($('body').width());
console.log($('body').height());