我有一个districts表,它是locales表的父表。
在地区索引视图中,我想查看每个地区符合特定条件的区域设置数量。
我可以使用简单的查询和语句,在组合多个方法(如groupBy和count方法)时会感到困惑。
以下是无效的语法,但它是我如何将其分解的想法。
$districts = District::all()
->with(('locales')
->groupBy('district_id')
->where('validated', '=', 1)
->count())
->get();
预期产量:
第一区|已验证27个语言环境
第2区|验证了15个语言环境
第三区|验证了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';
}