2017-04-17 62 views
0

我使用Symfony2中和学说得到的值从数据库中数组值的数组。我想要一个来自数据库表的一个字段的值列表。获取使用Doctrine

我使用以下代码:

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

它返回下列数组:

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

我想revieve以下:

Array 
(
    [0] => 3038 
) 

任一项所述的想不经过额外的foreach循环就可以直接从Doctrine中获得这个信息吗?

+1

这将是它http://stackoverflow.com/questions/11657835/how-to-get-a-one-dimensional-scalar-array-作为一种学说-DQL-查询结果/ 11685062#11685062或该http://stackoverflow.com/questions/11657835/how-to-get-a-one-dimensional-scalar-array-as-a-doctrine -dql-查询结果/ 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_column()''函数这里array_map'。 'array_map($ arr,'extId');'更简单,实际上性能更好。 –

+0

甜:)你的意思'array_column($改编, 'EXTID')';) –

+0

是啊,这就是我的意思。 :d –

相关问题