我正在使用DQL进行查询
$query = $this->createQueryBuilder('i')
->select('(i.sortiesNoSortie)','COUNT(i.participantsNoParticipant)')
->groupBy('i.sortiesNoSortie');
$result = $query->getQuery()->getArrayResult();
但是我得到了这个
array:3 [
0 => array:2 [
1 => "76"
2 => "1"
]
1 => array:2 [
1 => "82"
2 => "1"
]
2 => array:2 [
1 => "83"
2 => "1"
]
]
我想通过选择键和值在一个简单的数组中获得
76 => 1
82 => 1
83 => 1
有可能吗?
答案 0 :(得分:1)
出于明显的原因,结果是一个2D数组,因为它表示执行查询时将收到的行和列。从我的头开始,没有提供任何教义的功能来将其转换为所需的格式。
不过,您可以使用PHP为您重新格式化数组。
$result = $this->createQueryBuilder('i')
->select('(i.sortiesNoSortie)','COUNT(i.participantsNoParticipant)')
->groupBy('i.sortiesNoSortie')
->getQuery()
->getArrayResult();
$output = array();
foreach($result as $row) {
$output[$row[0]] = $row[1];
}
虽然乍一看似乎并不理想,但实际上,如果学说要以您想要的方式实现某种格式的格式化,它很可能会做类似的事情,然后将其包装为一个不错的函数。
>话虽如此,除了foreach循环外,可能还有更好的方法使用PHP处理数据。无论哪种方式,从学说中获取数据后,都不要完全避开用PHP重新格式化数据的方法。显然,这将视情况而定,但是似乎您正在处理少量数据,因此多余的处理将不是问题。
修改
感谢@Matteo提醒我。 array_column是可用于替换foreach循环的函数。
$output = array_column($result, 1, 0);