是否有可能使:
$q->createQuery('q')
->whereIn('q.id', $q2)
其中 $q2 是另一个 Doctrine_Query 对象。因为我的子查询很复杂,我不想用 SQL 来写...
不幸的是,根据Doctrine API 文档,您不能将另一个查询对象传递给whereIn()
,因此您必须事先获取您的 ID-s 并将它们传递到一个数组中。不过要小心,因为如果您传递一个空数组,那么这些 ID将不会被过滤。换句话说:它将返回表中存在的所有行,而不是没有。
使用 whereIn 时,参数应该是一个数组。您可以使用 execute(array(), Doctrine_Core::HYDRATE_ARRAY) 返回数组而不是对象。