Я написал 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] => NULL ['id':protected] => int(25) ['title':protected] => string(4) '2222' ['state':protected] => int(0) } }
thx за любую помощь