How to get a one-dimensional scalar array as a doctrine dql query result?

doctrine-orm, php

Solution

PHP < 5.5

You can use `array_map`, and since you only have on item per array, you can elegantly use `'current'` as callback, instead of writing a closure.

$result = $em->createQuery("SELECT a.id FROM Auction a")->getScalarResult();
$ids = array_map('current', $result);

See Petr Sobotka's answer below for additional info regarding memory usage.

PHP >= 5.5

As jcbwlkr's answered below, the recommended way it to use `array_column`.

Problem

I want to get an array of values from the id column of the Auction table. If this was a raw SQL I would write: ``` SELECT id FROM auction ``` But when I do this in Doctrine and execute: ``` $em->createQuery("SELECT a.id FROM Auction a")->getScalarResult(); ``` I get an array like this: ``` array( array('id' => 1), array('id' => 2), ) ``` Instead, i'd like to get an array like this: ``` array( 1, 2 ) ``` How can I do that using Doctrine?

Original source