我正在使用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"
]
]
我希望在一个简单的数组中得到它,其中包含我的select中的键和值
76 => 1
82 => 1
83 => 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);