Doctrine在Doctrine_Query中的位置

时间:2011-03-25 13:32:54

标签: doctrine dql

是否可以制作:

$q->createQuery('q')
  ->whereIn('q.id', $q2)

其中$ q2是另一个Doctrine_Query对象。因为我的子查询很复杂,我不想在SQL中编写它......

2 个答案:

答案 0 :(得分:2)

不幸的是,根据Doctrine API documentation,您无法将另一个查询对象传递给whereIn(),因此您必须事先获取ID-s并将其传递给数组。但要小心,因为如果你传递一个空数组,那么这些ID将会有 NO FILTERING 。换句话说:它将返回表中存在的所有行,而不是没有。

答案 1 :(得分:0)

使用whereIn时,参数应为数组。您可以使用execute(array(),Doctrine_Core :: HYDRATE_ARRAY)来返回数组而不是对象。