I have written a DQL query in 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();
Currently it returns the results of the query in an array like so:
Array
(
    [0] => Array
        (
            [position] => 10
        )
    [1] => Array
        (
            [position] => 4
        )
)
I want the result to return an array of Races objects so that I can access the methods associated with the object (I'm pretty sure the previous version of Doctrine returned objects by default).
I tried:
$aRaces = $query->getResult(Query::HYDRATE_OBJECT);
But that didn't make a difference.
Appreciate the help
You are fetching only position column from DB. Try replacing select('r.position') with select(r). See DQL reference
If you need objects with only position attribute, refer to partial objects
The: $qb->getResult(\Doctrine\ORM\Query::HYDRATE_OBJECT);
Return an array with object and you can catch them with: $match[0];
If you want to return a single result you must be use: $qb->getOneOrNullResult()
I could not solve my problem with your solution, here my part of code:
$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 returns this:
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 for any help
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With