Php 我需要一个帮助来理解WHEN子句

Php 我需要一个帮助来理解WHEN子句,php,laravel,Php,Laravel,我正在使用Laravel进行一个小项目,我尽力理解Laravel文档以创建一个好的解决方案,但这次我发现一些难以理解的WHEN子句 有人能给我举个例子来解释这段代码吗 $role = $request->input('role'); $users = DB::table('users') ->when($role, function ($query, $role) { return $query->

我正在使用Laravel进行一个小项目,我尽力理解Laravel文档以创建一个好的解决方案,但这次我发现一些难以理解的WHEN子句

有人能给我举个例子来解释这段代码吗

    $role = $request->input('role');

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

另外,我想知道输入函数中第二个参数
[]代表什么

request()->input('field', []);

只要变量role等于true,就会执行此查询:

return $query->where('role_id', $role);
关于第二个问题,如果未填写请求参数“字段”,则默认值集为:[]

另一个例子:

$foo = $request->input('test', 69);
如果没有填写请求参数测试,参数foo将为69。

文档中说:“when方法仅在第一个参数为true时执行给定的闭包。如果第一个参数为false,则闭包将不会执行。”。我似乎很清楚这一点。在这种情况下,如果将
$role
计算为
true
,则其中的
将添加到查询中。