5

我在 Doctrine 2 中编写了一个 DQL 查询:

$qb->select('r.position')
    ->from('\Entities\Races', 'r')
    ->where($qb->expr()->eq('r.entrantId', ':entrant_id'))
    ->setParameter('entrant_id', $this->entrantId);
$query = $qb->getQuery();
$aRaces = $query->getResult();

目前它以数组形式返回查询结果,如下所示:

Array
(
    [0] => Array
        (
            [position] => 10
        )

    [1] => Array
        (
            [position] => 4
        )
)

我希望结果返回一个 Races对象数组,以便我可以访问与该对象关联的方法(我很确定以前版本的 Doctrine 默认返回对象)。

我试过了:

$aRaces = $query->getResult(Query::HYDRATE_OBJECT);

但这并没有什么不同。

感谢帮助

4

3 回答 3

5

您只position从数据库中获取列。尝试替换select('r.position')select(r). 请参阅DQL 参考

如果您需要只有position属性的对象,请参阅部分对象

于 2011-08-15T10:42:58.140 回答
3

这:$qb->getResult(\Doctrine\ORM\Query::HYDRATE_OBJECT);

返回一个带有对象的数组,您可以使用以下方法捕获它们:$match[0];

如果要返回单个结果,则必须使用:$qb->getOneOrNullResult()

于 2014-04-13T18:12:43.203 回答
1

我无法用您的解决方案解决我的问题,这是我的部分代码:

$qb = $this->_objectManager->createQuery('Select d from Hotbed\Entity\Department d where d.id <> :id and d.title = :title');
        $qb->setParameters(array('id' => $context['id'], 'title' => $value));
        $match = $qb->getResult(\Doctrine\ORM\Query::HYDRATE_OBJECT);

$match 返回:

array(1) {
 [0] => object(Hotbed\Entity\Department)#626 (4) {
   ['inputFilter':protected] =&gt; NULL
   ['id':protected] =&gt; int(25)
   ['title':protected] => string(4) '2222'
   ['state':protected] => int(0)
 }
}

谢谢任何帮助

于 2013-11-18T12:52:24.107 回答