Как вернуть объект из DQL-запроса?

Я написал DQL-запрос в Doctrine 2:

$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); 

Но это не имело никакого значения.

Цените помощь

Вы извлекаете только столбец position из БД. Попробуйте заменить select('r.position') на select(r) . См. Ссылку DQL

Если вам нужны объекты с атрибутом только position , обратитесь к частичным объектам

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

Верните массив с объектом, и вы можете поймать их с помощью: $match[0];

Если вы хотите вернуть один результат, вы должны использовать: $qb->getOneOrNullResult()

Я не мог решить свою проблему с вашим решением, вот моя часть кода:

 $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) } } 

thx за любую помощь