У меня есть три модели Country
, Province
и District
.Country
имеет отношение «один ко многим» как с моделями Province
, так и с District
.И Province
имеет отношение один-ко-многим с District
моделью.Модель District
имеет province_id
в качестве внешнего ключа.
В модели District
у меня есть сумма для суммирования.Я хочу получить сумму населения для каждой провинции.
$population = Country::where(['name' => $c_name])->first()->districts;
$num = $population->groupBy('province_id')->map(function ($row) {
return $row->sum('population_m');
});
SQL-запрос:
SELECT provinces.name, SUM(districts.population_m) AS population_m, SUM(districts.population_f) AS population_f FROM provinces
LEFT JOIN districts ON provinces.id = districts.province_id
GROUP BY provinces.name;
Приведенное выше возвращает идентификатор провинции, но я хочу указать название провинции вместе с ним.