我正在输入一个名为"email"的字段,并使用laravel验证器进行检查。问题是,我想确保"电子邮件"数据在两个不同表的两列中是唯一的。(卖家和买家的"电子邮件"栏中不得有相同的电子邮件(。
我可以检查一个表和一列的输入,我应该如何检查两列的输入?下面是我的代码。
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'emailOrNumber' => ['required', 'string','email','max:255','unique:usersNew,email'],
'password' => ['required', 'string', 'min:8'],
]);
上面的代码只在usersNew表和电子邮件列中检查电子邮件,我如何在这里检查这两个表?
您可以使用unique
规则两次。对于每个表,您需要检查一个字段的唯一性:
'email' => [..., 'unique:table1', 'unique:table2'],
当您不将列传递给unique
规则时,它将使用正在验证的当前字段名,在本例中为email
。
Laravel 6.x文档-验证-规则-unique
只需使用
'email' => 'unique:table1,your_column_name|unique:table2:your_column_name_2'
或者使用它回答https://laracasts.com/discuss/channels/laravel/validate-a-field-from-2-tables-with-different-message
试试这个,
return Validator::make($data, [
'email' => ['required', 'string','email','max:255','unique:user|unique:email'],
'password' => ['required', 'string', 'min:9'],
]);
在此代码中,unique:username|unique:email
将假定电子邮件和用户名为唯一
使用以下代码
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'emailOrNumber' => ['required', 'string','email','max:255','unique:usersNew|unique:email'],
'password' => ['required', 'string', 'min:8'],
]);
希望它能帮助你