是否可以制作:
$q->createQuery('q')
->whereIn('q.id', $q2)
其中$ q2是另一个Doctrine_Query对象。因为我的子查询很复杂,我不想在SQL中编写它......
答案 0 :(得分:2)
不幸的是,根据Doctrine API documentation,您无法将另一个查询对象传递给whereIn()
,因此您必须事先获取ID-s并将其传递给数组。但要小心,因为如果你传递一个空数组,那么这些ID将会有 NO FILTERING 。换句话说:它将返回表中存在的所有行,而不是没有。
答案 1 :(得分:0)
使用whereIn时,参数应为数组。您可以使用execute(array(),Doctrine_Core :: HYDRATE_ARRAY)来返回数组而不是对象。