John Davidson

php - Doctrine ORM query builder fetch key value pair

0 comments
Message:


I have the following code in an entity repository:


$rows = $this->createQueryBuilder('t')
->select(['t.idColumn', 't.valueColumn'])
->where('t.foo = :foo')
->orderBy('t.idColumn', 'ASC')
->setParameter('foo', $foo)
->getQuery()
->getArrayResult(); // This returns [[idColumn => ..., valueColumn => ...], ...]
$data = [];

foreach ($rows as $row) {
$data[$row['idColumn']] = abs($row['valueColumn']); // Remapping to [id => value]
}

return $data;

Is there any way to get rid of the custom remapping natively? I know that you can use the indexBy parameter, but that only gets me the correct keys but not values.


P.S. I know of array_column(), but that's an extra step that I have to make every time, not to mention it doesn't work on methods that entities have.


P.P.S. This is not using Symfony.



My Answer:
createQueryBuilder('e')
->select('e.id, e.name')
->getQuery()
->getArrayResult();

This code will fetch the id and name columns from the entity and return an array of key-value pairs where the key is the id and the value is the name.

Rate this post

5 of 5 based on 3566 votes

Comments




© 2024 Hayatsk.info - Personal Blogs Platform. All Rights Reserved.
Create blog  |  Privacy Policy  |  Terms & Conditions  |  Contact Us