Laravel 4.1 Как получить количество условных дочерних записей на родительскую запись в представлении индекса?

У меня есть таблица районов, которая является родительской для таблицы локалей.
В представлении индекса округа я хочу видеть количество локалей на район, которые соответствуют определенным критериям.

Я в порядке с простыми запросами и с заявлениями, я запутался при объединении нескольких методов, таких как groupBy и count.

Следующий синтаксис недопустим, но я ломаю его в своей голове.

    $districts = District::all()
->with(('locales')
->groupBy('district_id')
->where('validated', '=', 1)
->count())
->get();

Ожидаемый результат:

Район 1 | Подтверждено 27 языков

Район 2 | Утверждено 15 языков

Район 3 | 14 утвержденных локалей

Я бы хотел иметь доступ и к остальным районам.
Я также избегаю проблемы n + 1 …

Спасибо.

0

Решение

Вы можете загрузить свои районы локалями (опционально только местные жители, которые прошли валидацию). Затем, когда вы переходите на страницу, вы можете посчитать количество локалей.

Ваш код, вероятно, должен выглядеть примерно так:

$districts = District::all()->with(['locales' => function($query) {
$query->where('validated', '=', 1);
}])->get();

Затем, когда вы переходите на страницу:

foreach($districts as $district) {
echo $district . '|' . $district->locales()->count() . ' Locales Validated';
}
2

Другие решения

Других решений пока нет …