我创造方法来选择当前的前提,一切都是好的。
public function findByDistrictIds($criteria)
{
$q = $this->getEntityManager()->
createQuery('SELECT f.id, f.path FROM RealestateCoreBundle:Foto f WHERE f.premises in (:criteria)');
$q->setParameter('criteria', $criteria);
return $q->getResult();
}但是当我添加到选择命令"f.premises“时,得到错误
语义错误行0,第23行靠近‘前提’:错误:无效PathExpression。一定是StateFieldPathExpression。
我怎么才能和premises_id在一起?如何在queryBuilder中使用"WHERE IN“子句?
发布于 2011-12-11 00:49:13
阿。这件事是最近提出来的。前提是一个关系字段,所以您需要做一个获取连接。注意字段列表中的前提别名p:
SELECT f.id, f.path, p
FROM RealestateCoreBundle:Foto f
JOIN f.premises p
WHERE ...希望这会有所帮助:)
发布于 2014-03-10 04:33:21
public function findByDistrictIds($criteria)
{
$q = $this->getEntityManager()->
createQuery('SELECT f.id, f.path FROM RealestateCoreBundle:Foto f WHERE f.premises = :criteria');
$q->setParameter('criteria', $criteria);
return $q->getResult();
}您可以尝试使用f.premises = :criteria
而不是f.premises in (:criteria)
发布于 2014-04-01 08:04:49
对于查询生成器中的WHERE IN,可以将$criteria作为数组传递给setParameter()方法。还要确保数组是这种格式的。
$criteria = array('1','2','3'); /* correct */
$criteria = array('1,2,3'); /* incorrect. Some people misunderstand this and set the array like this which is incorrect */所以你的查询应该是这样的,
$q = $this->getEntityManager()->
createQuery('
SELECT f.id, f.path FROM RealestateCoreBundle:Foto f
WHERE f.premises in (:criteria)');
$q->setParameter('criteria', array('1','2','3'));希望这能有所帮助。
https://stackoverflow.com/questions/8460881
复制相似问题