【发布时间】:2011-04-05 10:08:32
【问题描述】:
我有一个返回 Doctrine_Collection 的方法,带有 whereIn() 子句:
public function getByValues($values)
{
if (!is_array($values))
throw new sfException('Wrong parameter type. Excepted array.');
return Doctrine_Query::create()
->from('Anomaly a')
->whereIn('a.value', $values);
}
但是,当$values 为空数组时,此方法返回AnomalyTable 中的所有行。这不是意外行为,如 Doctrine 文档中所述,并写在此处:Doctrine where in with Doctrine_Query
但是,当$values 是一个空数组时,我想返回一个空的Doctrine_Collection 而不是我的查询结果。
关于如何做到这一点的任何想法?
谢谢 =)
编辑:
添加一个不可能的子句,如->where('1=0') 可以解决问题,但它是对数据库服务器的不必要请求。有人有更好的主意吗?
【问题讨论】:
-
当你已经知道你将一无所获时,为什么还要查询数据库?只需检查 $values,如果它为空 - 根本不要查询。
-
我不想查询
$values是否为空,只返回一个空的Doctrine_Collection
标签: php symfony1 doctrine dql doctrine-collection