2017-04-17 11 views
0

私はSymfony2とDoctrineを使ってデータベースから値の配列を取得しています。私は、データベーステーブルの1つのフィールドから値のリストが必要です。Doctrineを使って値の配列を取得

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

それは次の配列を返します:

Array 
(
    [0] => 3038 
) 

どれでも1:

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

は、私は、次のrevieveしたいを

私は、次のコードを使用しています余分なforeachループなしでDoctrineからこのダイレクトを得るためのidee?

+1

これはhttp://stackoverflow.com/questions/11657835/how-to-get-a-one-dimensional-scalar-array-それをだろうas-a-doctrine-dql-query-result/11685062#11685062またはこれhttp://stackoverflow.com/questions/11657835/how-to-get-a-one-dimensional-scalar-array-as-a-doctrine -dql-query-result/11685062#11685062 – Confidence

答えて

2

カスタムハイドレーターを使用しないと、箱から出ることはできません。しかし、あなたは(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); 
+2

PHP5.5 +には、ここで 'array_map'の代わりに' array_column() '関数が使用されています。 'array_map($ arr、 'extId');'はより簡単で実際にはより良いパフォーマンスを示します。 –

+0

Sweet :)そして、あなたは 'array_column($ arr、 'extId')';)を意味しました –

+0

そうです、それは私が意味していたことです。 :D –

関連する問題