Laravel eloquent 根据布尔参数调用关系

Laravel eloquent call realtionship based on a boolean parameter

我正在尝试创建一个方法来检索具有关系的模型我希望能够基于布尔参数获取关系 例如,我可以使用如下的 if 条件

if($load == true){
   $users = User::with('login')->all()->paginate();
}else{
$users = User::all()->paginate();
}

我想知道是否有办法在没有 if 条件的情况下即时完成

你可以使用when方法:

 $users = User::when($load, function ($query) {
                    return $query->with('login');
                })->paginate(10);

when 方法仅在第一个参数为真时执行给定的闭包。如果第一个参数为假,闭包将不会被执行

您可以在查询生成器上使用 when() 方法。请注意,当您要使用分页器时,您不需要使用 all() 方法。

User::query()
    ->when($load, fn($query) => $query->with('login'))
    ->paginate();