#laravel
#laravel
Вопрос:
Это гистограмма, которую я хочу нарисовать, и я поражен запросами
Моя база данных выглядит так, где я хочу показать население страны 2020 года
id | country_name | population | created_at
1 | USA | 2000000000 | 2020-02-04
2 | China | 2200000000 | 2020-02-04
3 | Russia | 12000000 | 2020-04-02
Мой запрос выглядит следующим образом. Я просто пытаюсь создать запрос, но не получаю результата.Возможно, есть какая-то ошибка.Сначала я сделал переменную $countries, чтобы получить все страны.
public function barChart(){
$countries=Country::get();
$graphic_header=['Year'];
$countrydata=[];
$actionDate=[];
$country_name=[];
foreach ($countries as $country) {
array_push($country_name, $country->name);
array_push($actionDate, date('Y', strtotime($country->created_at)));
$actionDate = array_unique($actionDate);
}
$graphic_header=array_merge($graphic_header,$country_name); //Dynamic Header
array_push($countrydata,$graphic_header);
foreach($actionDate as $d) {
$d = [$d];
$d = array_pad($d, sizeof($graphic_header), 0);
array_push($data, $d);
}
foreach ($countries as $country){
$date = date('Y', strtotime($country->created_at));
foreach ($data as $in =>$gd){
if ($date == $gd[0]) {
$index = (array_search($country->country_name, $graphic_header));
$country_data[$in][$index] = $country->population;
}
}
}
return response()->json([
'data'=> $country_data,
]);
}
Ответ №1:
просто используйте этот метод сбора groupBy
$countries=Country::get();
$countries = $countries->groupBy('country_name');
$countries->toArray();