Laravel 5 eloquent with whereHas more than 3. 怎么办?

Laravel 5 eloquent with whereHas more than 3. How to?

它似乎不起作用,当我使用 "with" 并在其中运行函数并稍后尝试使用 "has" 函数时。这是代码,应该更容易理解:

$users = Users::where("active","=", "1")->with(['photos' => function($q){
            $q->where('type','!=', 2);
       }])->has('photos', '>', 3)->paginate(8);
}

似乎,只有当他有 3 张不是类型 2 的照片时,它才应该 return 用户。但它不关心 "where" 子句和 return 它不检查类型。

我怎样才能实现我的目标?

谢谢!

照片预加载的约束完全不会影响获取用户的查询。您需要使用 whereHas() 方法将 type 约束添加到照片检查中。

whereHas() 方法只是语法糖,用于正确调用带有回调的 has() 方法。 whereHas() 方法也接受一个运算符和一个计数。因此,以下应该有效:

$users = Users::with(['photos' => function($query) {
        $query->where('type', '!=', 2);
    }])
    ->where("active","=", "1")
    ->whereHas('photos', function ($query) {
        $query->where('type', '!=', 2);
    }, '>', 3)
    ->paginate(8);