如何将Doctrine查询返回的嵌套key数组合并为一维数组
最优解决方案
你当前调用的getResult()方法默认返回二维嵌套数组,每一行查询结果都会被包装为包含字段名的关联数组,因此出现了你遇到的嵌套结构。
方案1:Doctrine原生支持(最优)
直接将getResult()替换为getSingleColumnResult()即可,该方法专门用于单列查询场景,会直接提取第一列的所有值返回一维数组,不需要额外的数组处理,性能最优。
修改后代码:
return $this->createQueryBuilder('t') ->select('t.key') ->getQuery() ->getSingleColumnResult();
方案2:PHP数组处理(备选)
如果你的业务逻辑需要先拿到完整的查询结果再做提取,可以使用array_column方法直接提取所有子数组的key字段:
$result = $this->createQueryBuilder('t') ->select('t.key') ->getQuery() ->getResult(); return array_column($result, 'key');
两种方案都可以得到你需要的无嵌套一维数组,优先推荐方案1。
内容的提问来源于stack exchange,提问作者learningsymfony
相关产品推荐
相关产品推荐

