Php 使用Laravel中的validator检查两个表中两列的唯一性
我正在输入一个名为“email”的字段,并使用laravel验证器进行检查。问题是我想确保“email”数据在两个不同表的两列中是唯一的。(卖家和买家的“电子邮件”栏中不得有相同的电子邮件) 我能够检查一个表和一列中的输入,如何检查两列中的输入?下面是我的代码Php 使用Laravel中的validator检查两个表中两列的唯一性,php,mysql,laravel,validation,Php,Mysql,Laravel,Validation,我正在输入一个名为“email”的字段,并使用laravel验证器进行检查。问题是我想确保“email”数据在两个不同表的两列中是唯一的。(卖家和买家的“电子邮件”栏中不得有相同的电子邮件) 我能够检查一个表和一列中的输入,如何检查两列中的输入?下面是我的代码 return Validator::make($data, [ 'name' => ['required', 'string', 'max:255'], 'emailOrNumber' =&g
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'emailOrNumber' => ['required', 'string','email','max:255','unique:usersNew,email'],
'password' => ['required', 'string', 'min:8'],
]);
以上代码仅在usersNew表和email列中检查电子邮件,我如何在此处检查这两个表?只需使用它即可
'email' => 'unique:table1,your_column_name|unique:table2:your_column_name_2'
或者使用它回答使用下面的代码
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'emailOrNumber' => ['required', 'string','email','max:255','unique:usersNew|unique:email'],
'password' => ['required', 'string', 'min:8'],
]);
希望它能帮助你试试这个
return Validator::make($data, [
'email' => ['required', 'string','email','max:255','unique:user|unique:email'],
'password' => ['required', 'string', 'min:9'],
]);
在此代码中,
unique:username | unique:email
将假定电子邮件和用户名是唯一的您可以使用unique
规则两次。对于每个表,您需要检查字段的唯一性:
'email' => [..., 'unique:table1', 'unique:table2'],
如果不将列传递给unique
规则,则在本例中,它将使用正在验证的当前字段名email
谢谢你的回复,但是我的表格中有我的列名电子邮件,你在上面的代码中没有提到列名,我应该把列名放在哪里?使用这个-
“unique:usersNew,column_name1 | unique:email,column_name2”
不起作用。下面显示错误SQLSTATE[42S22]:未找到列:1054“where子句”中的未知列“email | unique:sellers:email”(SQL:选择count(*)作为聚合自usersNew
其中email | unique:sellers:email
=faisal@yahoo.com)在使用您的方法之后,它向我显示了以下错误,SQLSTATE[42S22]:未找到列:1054“where子句”(SQL:select count(*)中的未知列“email | unique:sellers:email”作为聚合自usersNew
whereemail | unique:sellers:email
=faisal@yahoo.com)表2后面的:
应该是,
<代码>唯一:表2,您的列名称\u 2。。。。因为OP使用的是数组,所以第一个和第二个唯一(规则)需要分开<代码>[…,“唯一:表1,电子邮件”,“唯一:表2,电子邮件”]