首页 > 解决方案 > 我需要帮助来理解 WHEN 子句

问题描述

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

有人可以通过给我一个例子来向我解释这段代码:

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

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

文档:https ://laravel.com/docs/7.x/queries#conditional-clauses

我也想知道第二个参数代表什么[] in the input function

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

标签: phplaravel

解决方案


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

return $query->where('role_id', $role);

就您的第二个问题而言,如果未填写请求参数“字段”,则默认值设置为:[]。

另一个例子:

$foo = $request->input('test', 69);

如果请求参数 test 未填写,则参数 foo 将为 69。


推荐阅读