$result = Doctrine_Core::getTable('Property')->createQuery('p')
->select('min(p.article_id) as article_id')
->where('p.name = ?', 'hotel_number')
->innerJoin('p.Article a')
->andWhere('a.is_active = ?', true)
->groupby('p.string_value')->execute();
这应该返回多个对象:
$articles = array();
foreach ($result as $temp) {
$articles[] = $temp['article_id'];
}
return $articles;
我不明白为什么如果我在phppgadmin中触发查询,我得到100+的结果,这只会返回一个对象。我尝试了其他一些在其他方法中效果良好的查询,它们在这里也只返回了一个:
有人有想法吗?我以前从未遇到过这种情况,无法解决此问题-.-
试试这个:
->where('p.name = :name')
->andWhere('a.is_active = :active')
->setParameter('name', 'hotel_number')
->setParameter('active', true)
好的,伙计们,我解决了我的问题,这是一个带有别名的教义错误..我在谷歌搜索中发现了这个。
教义给出的别名存在问题
这是该问题的链接:www.doctrine-project.org 别名问题
对于我的问题,修复很容易,因为我只想获取与查询匹配的所有 ID。
这修复了它:$result->execute(array(), Doctrine::HYDRATE_SCALAR)
HYRATE_SCALAR没有返回任何对象数组..看看这里的教义文档:
HYDRATE_SCALAR文档
希望我能帮助解决这个问题的人。谢谢 4 帮助伙计们:)