Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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中的validator检查两个表中两列的唯一性_Php_Mysql_Laravel_Validation - Fatal编程技术网

Php 使用Laravel中的validator检查两个表中两列的唯一性

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

我正在输入一个名为“email”的字段,并使用laravel验证器进行检查。问题是我想确保“email”数据在两个不同表的两列中是唯一的。(卖家和买家的“电子邮件”栏中不得有相同的电子邮件)

我能够检查一个表和一列中的输入,如何检查两列中的输入?下面是我的代码

    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
where
email | unique:sellers:email
=faisal@yahoo.com)表2后面的
应该是
<代码>唯一:表2,您的列名称\u 2。。。。因为OP使用的是数组,所以第一个和第二个唯一(规则)需要分开<代码>[…,“唯一:表1,电子邮件”,“唯一:表2,电子邮件”]