1

I'm using Symfony2 and Doctrine to get an array of values from the database. I want a list of values from one field of the database table.

I'm using the following code:

        return $this->createQueryBuilder('ad')
        ->select('ad.extId')
        ->where('ad.extId is not NULL')
        ->getQuery()
        ->getArrayResult();

It returns the following array:

Array
(
    [0] => Array
        (
            [extId] => 3038
        )
)

I would like to revieve the following:

Array
(
    [0] => 3038
)

Any one an idee to get this direct from Doctrine without an extra foreach loop?

1

1 Answer 1

1

Without custom hydrator, I don't think it is possible out of the box. However, you could do this (similar to foreach):

$arr = $this->createQueryBuilder('ad')
        ->select('ad.extId')
        ->where('ad.extId is not NULL')
        ->getQuery()
        ->getArrayResult();

return array_map(function($a){ return $a['extId']; }, $arr);
Sign up to request clarification or add additional context in comments.

3 Comments

For PHP5.5+ there's array_column() function which may be used instead of array_map here. array_map($arr, 'extId'); is simpler and actually has better performance.
Sweet :) And you meant array_column($arr, 'extId') ;)
Yeah, that's what I meant. :D

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.