Php Laravel中的电子邮件验证规则
我是这样做的Php Laravel中的电子邮件验证规则,php,laravel,Php,Laravel,我是这样做的 $rules = [ 'email'=> 'required|regex:/^.+@.+$/i|unique:tab_example,email,'.$this>get('example_id').',example_id' ]; return $rules; 然而,我并没有获得成功 错误提示 该电子邮件已存在 我想要的是,如果电子邮件已经存在并且来自同一用户,则不需要通知该电子邮件已经存在 我不知道我的代码有什么问题。您可以使用 'email' =>
$rules = [
'email'=> 'required|regex:/^.+@.+$/i|unique:tab_example,email,'.$this>get('example_id').',example_id'
];
return $rules;
然而,我并没有获得成功
错误提示
该电子邮件已存在
我想要的是,如果电子邮件已经存在并且来自同一用户,则不需要通知该电子邮件已经存在
我不知道我的代码有什么问题。您可以使用
'email' => "required|email|unique:users,email,{$id},id",
id应替换为用于唯一检查的表的主键列名。{$id}应该在$rules
数组之前定义,如下所示:
$id = $request->route('user')
试试这个
'email' => Rule::unique('users')->ignore($user->id, 'user_id');
有时,您可能希望在唯一检查期间忽略给定的ID
例如,考虑一个包含“用户名”、“电子邮件地址”和“位置”的<强>“更新配置文件”<强>屏幕。当然,您需要验证电子邮件地址是否唯一
但是,如果用户仅更改名称字段而不更改电子邮件字段,则不希望引发验证错误,因为该用户已经是电子邮件地址的所有者 您可以像这样使用:'email' => [
'required',
Rule::unique('users')->ignore($user->id),
],
只用
$this->route('example_id')
而不是
$this>get('example_id')
如果使用资源路由,则使用$this->route('user')
这样试试
$rules = [
'email'=> ['required', 'email', \Illuminate\Validation\Rule::unique('tab_example', 'email')->whereNot('example_id',$this->get('example_id'))]
];
来自同一个用户如何?在哪里实现此代码?在controller?中有一个用户注册,当您打开他或她的注册并发送此注册时(如果未交换电子邮件),电子邮件仍与此用户链接,即您不需要显示此电子邮件已被使用,因为它是同一用户。我创建了一个请求,如果我错了,请更正我,但我认为最后一个值(即,
id
)不是必需的。最后两个值将用于“唯一,但id列中的$id除外”(更新时)是的,但倒数第二个($id
)是id指定,laravel默认情况下将查看id
列,因此这里绝对不需要最后一个值!我包含它是因为问题所有者包含了$this>get('example\u id')。,example\u id'
啊,是的,我错过了:)nvm然后我做了这件事,但它仍然返回我同样的问题,它说电子邮件已经存在……你的参数名是什么?您是否使用了资源路由?公共函数rules(){$rules=['email'=>“必选|唯一:tab_示例,email,“.$this->route('example_id')。”,example_id“];return$rules;}我不是在谈论您的规则函数。我说的是你的路线。你能给出你的相关路线吗?我的问题是获取用户id,我不知道我是否弄错了,但我意识到了这一点,我想问题可能是路线()。我的路线:$this->post('/admin/doctors/save/{id?}','medicoscocontroller@save')->name('doctors');$这>任何('/admin/doctors/{action?}/{id?}',MedicosController@action')->名称('doctors');
$rules = [
'email'=> ['required', 'email', \Illuminate\Validation\Rule::unique('tab_example', 'email')->whereNot('example_id',$this->get('example_id'))]
];