小问题是测试用户编辑表单,当我使用自定义请求验证数据时,当我有唯一字段时它会给我带来问题。
在我的情况下,我将电子邮件作为唯一字段,当我编辑并且我不想修改电子邮件时,它会向我抛出它被占用的消息。
public function rules()
{
return [
'name' => 'required|string|min:3|max:60',
'email' => 'required|email|unique:users',
];
}
我想到的第一件事是修改请求规则,它说是唯一的,但这允许我输入已经在数据库中的电子邮件并且什么也不说,这很好,在我的数据库中它也受到限制,他没有说,但如果他警告他它被采取了,我希望在这种情况下
我发生的下一件事是在控制器中执行此部分,但我无法验证数据库中是否存在电子邮件,也就是说,如果我在哪里获取用户,如果电子邮件存在或如果没有,则为空集合,但它在那里。
在 Laravel 文档中解释了这种情况:
https://laravel.com/docs/5.3/validation#rule-unique
如果您需要更复杂的东西,想法是使用类
Rule
和忽略方法:或视情况而定:
请记住,规则方法中的 unique 有 3 个参数:
第一个参数定义表,第二个是列,第三个是应该忽略哪一行(带有它的id)
在这种情况下,如果您进行转储并死掉
在方法开始时,您将获得请求的所有参数。正如您应该知道的请求内部是您尝试访问的路由(mysite.com/user/edit/{user} => 其中 {user} 是您要修改的用户的 ID),因此使用 $this - >route('user') 访问路径中写入的变量 {user}。
问候。
我通过以下方式做到这一点:
在路由方法中,“users.id”参数是表的 id 字段旁边的路由资源(在我的例子中是用户)的名称。
此外,该方法为我提供了插入和更新的服务。
如果它不起作用,请执行 dd(this->route('users.id') 或任何用户路由加上 id 被调用,并检查它是否实际上返回了用户的 id。
问候。