laravel查询when方法

用when方法及匿名函数

https://d.laravel-china.org/docs/5.4/queries#conditional-clauses

有时候,你希望某个值为 true 时才执行查询。例如,如果在传入请求中存在指定的输入值的时候才执行这个 where语句。你可以使用 when 方法实现:

$role = $request->input('role');
 
$users = DB::table('users')
                ->when($role, function ($query) use ($role) {
                    return $query->where('role_id', $role);
                })
                ->get();


只有当 when 方法的第一个参数为 true 时,闭包里的 where 语句才会执行。如果第一个参数是 false,这个闭包将不会被执行。

你可能会把另一个闭包当作第三个参数传递给 when 方法。如果第一个参数的值为 false 时,这个闭包将执行。为了说明如何使用此功能,我们将使用它配置默认排序的查询:

$sortBy = null;
 
$users = DB::table('users')
                ->when($sortBy, function ($query) use ($sortBy) {
                    return $query->orderBy($sortBy);
                }, function ($query) {
                    return $query->orderBy('name');
                })
                ->get();

猜你喜欢

转载自blog.csdn.net/qq_41971426/article/details/85061865