【发布时间】:2017-11-11 01:37:48
【问题描述】:
我是 Laravel 新手,在使用 when() 函数时遇到了问题。首先,我确实有一个包含 3 个输入字段的表单:名称、电子邮件和密码。
<form method="post" action="/users">
<?php echo csrf_field(); ?>
<input type="text" name="name" placeholder="Name">
<input type="email" name="email" placeholder="Email">
<input type="password" name="password" placeholder="Password">
<input type="submit" value="Create">
</form>
我在控制器文件中也有这段代码。
$role = $request->input('role');
$first = User::when($role,function ($query) use ($role){
return $query->where('username',$role);
})->get();
根据 Laravel 文档,这不应该起作用,因为我提交的表单中没有名为“角色”的元素,并且 $role 变量必须返回 false。但是当我循环 $first 变量时,它包含用户表中的所有记录。所以我试着纠正并把
$role = $request->input('name');
因此,当我将名称放在 User 表中时,它可以完美运行。但是当我在 (input type='text' name='name') 元素处输入任何内容并提交表单时。它再次显示了用户表中的所有记录。我真的很困惑,我认为这与 $request->input() 返回的“假”或“空”有关。请指教。谢谢。
【问题讨论】: