У меня есть таблица районов, которая является родительской для таблицы локалей.
В представлении индекса округа я хочу видеть количество локалей на район, которые соответствуют определенным критериям.
Я в порядке с простыми запросами и с заявлениями, я запутался при объединении нескольких методов, таких как groupBy и count.
Следующий синтаксис недопустим, но я ломаю его в своей голове.
$districts = District::all()
->with(('locales')
->groupBy('district_id')
->where('validated', '=', 1)
->count())
->get();
Ожидаемый результат:
Район 1 | Подтверждено 27 языков
Район 2 | Утверждено 15 языков
Район 3 | 14 утвержденных локалей
Я бы хотел иметь доступ и к остальным районам.
Я также избегаю проблемы n + 1 …
Спасибо.
Вы можете загрузить свои районы локалями (опционально только местные жители, которые прошли валидацию). Затем, когда вы переходите на страницу, вы можете посчитать количество локалей.
Ваш код, вероятно, должен выглядеть примерно так:
$districts = District::all()->with(['locales' => function($query) {
$query->where('validated', '=', 1);
}])->get();
Затем, когда вы переходите на страницу:
foreach($districts as $district) {
echo $district . '|' . $district->locales()->count() . ' Locales Validated';
}
Других решений пока нет …