获取包含键和值的数组作为我在 DQL 中的 select 属性
Get array with key and value as my select attributes in DQL
我正在使用 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
这可能吗?
由于显而易见的原因,结果是一个二维数组,因为它表示您在执行查询时将收到的行和列。从我的头顶来看,没有一个学说提供的功能来将它转换成你想要的格式。
但是您可以使用 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];
}
虽然一开始这似乎并不理想,但实际上,如果 doctrine 要实现某些东西以按照您想要的方式对其进行格式化,它很可能会做类似的事情,只是将其包装在一个适合您的函数中。
话虽如此,使用 PHP 可能有比 foreach 循环更好的处理数据的方法。无论哪种方式,在从教义中获取数据后,不要完全回避在 PHP 中重新格式化数据。显然,这将视具体情况而定,但您似乎正在处理少量数据,因此额外的处理不会成为问题。
编辑
感谢@Matteo 提醒我。 array_column 是可以用来替换 foreach 循环的函数。
$output = array_column($result, 1, 0);
我正在使用 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
这可能吗?
由于显而易见的原因,结果是一个二维数组,因为它表示您在执行查询时将收到的行和列。从我的头顶来看,没有一个学说提供的功能来将它转换成你想要的格式。
但是您可以使用 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];
}
虽然一开始这似乎并不理想,但实际上,如果 doctrine 要实现某些东西以按照您想要的方式对其进行格式化,它很可能会做类似的事情,只是将其包装在一个适合您的函数中。
话虽如此,使用 PHP 可能有比 foreach 循环更好的处理数据的方法。无论哪种方式,在从教义中获取数据后,不要完全回避在 PHP 中重新格式化数据。显然,这将视具体情况而定,但您似乎正在处理少量数据,因此额外的处理不会成为问题。
编辑
感谢@Matteo 提醒我。 array_column 是可以用来替换 foreach 循环的函数。
$output = array_column($result, 1, 0);