Symfony学说方法执行只返回一个对象,但为什么


symfony doctrine method execute just give one object back but why?

   $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 帮助伙计们:)