我在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返回了对象)。 / p>
我试过了:
$aRaces = $query->getResult(Query::HYDRATE_OBJECT);
但这并没有什么不同。
感谢帮助
答案 0 :(得分:4)
您只从DB中获取position
列。尝试将select('r.position')
替换为select(r)
。见DQL reference
如果您需要只有position
属性的对象,请参阅partial objects
答案 1 :(得分:2)
:$qb->getResult(\Doctrine\ORM\Query::HYDRATE_OBJECT);
返回一个包含对象的数组,您可以使用:$match[0];
如果您想要返回单个结果,则必须使用:$qb->getOneOrNullResult()
答案 2 :(得分:0)
我无法用您的解决方案解决我的问题,这是我的部分代码:
$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] => NULL
['id':protected] => int(25)
['title':protected] => string(4) '2222'
['state':protected] => int(0)
}
}
thx任何帮助