【发布时间】:2018-01-07 03:57:02
【问题描述】:
我的验证规则是...
$rules = [];
foreach($this->request->get('email') as $key=>$value){
$rules['email.'.$key] = 'required|regex:/[a-zA-Z]+@[a-zA-Z]+(\.[a-zA-Z]+)+/|unique:admins,admin_email,'.$this->request->get('admin_id')[$key].',admin_id';
}
基本上,规则是它是必需的,正则表达式通过,并且电子邮件尚未使用,除非该特定行正在使用电子邮件。但是,我在运行表单时收到此错误消息:
The email.0 has already been taken.
要清楚,这个表单有 8 个不同的用户,只有第一个给我这个问题。我对规则进行了 dd() 以查看正在应用的验证规则之间有什么不同,但我没有看到任何不同。
"email.0" => "required|regex:/[a-zA-Z]+@[a-zA-Z]+(\.[a-zA-Z]+)+/|unique:admins,admin_email,0,admin_id"
"email.1" => "required|regex:/[a-zA-Z]+@[a-zA-Z]+(\.[a-zA-Z]+)+/|unique:admins,admin_email,1,admin_id"
"email.2" => "required|regex:/[a-zA-Z]+@[a-zA-Z]+(\.[a-zA-Z]+)+/|unique:admins,admin_email,2,admin_id"
如果我更新 email.0,我不会遇到这个问题。无论我是否更新 email.0,我也不会在任何其他行中遇到这个问题。我无法删除此用户,因为存在外键约束。非常清楚的是,这个特定管理员的admin_id是0。或者,换句话说,这就是表格查找此特定条目的方式
admin_id|admin_email
--------+------------
0 | ab@c.d
编辑:Laravel 在哪里构建和运行实际查询?如果我可以在数据库日志上执行 dd(),我可能会找到我的问题所在(请参阅实际的原始查询)。
我显然在这里遗漏了一些东西 - 任何帮助将不胜感激!
【问题讨论】:
-
能否将
dd(request())的输出粘贴到验证和验证码本身之前?
标签: laravel validation