我有一个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';
}

08-07 00:11