更好的嵌套查询方法

Better approach for nested query

我是 Laravel 的新手。

我有这个问题

$city = City::where('slug', $slug)->first();
$city->users = $city->users()->where('gender', 'male')->get();

所以我想知道对于这种情况有什么更好的方法。综上所述,我需要找到一个城市和属于该城市的所有用户,性别=男性。

我试过但没成功

$city = City::whereHas('users', function($q) {
            $q->where('gender', '=', 'male');
        })->where('slug', $slug)
          ->first();

我错过了什么?

我相信 Laravel 的 Eager Loading 可以做到这一点。 在您的城市模型中正确设置关系后 class 您可以

$city = City::where('slug', $slug)
        ->with(['users' => function ($query) {
                               $query->where('gender', 'male');
                           }])->first();