Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel中的电子邮件验证规则_Php_Laravel - Fatal编程技术网

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'))]
    ];