Php Laravel验证:存在两列同一行

Php Laravel验证:存在两列同一行,php,laravel,validation,rules,Php,Laravel,Validation,Rules,在Laravel中指定exists验证规则时,是否有方法引用其他字段 我的请求: public function rules() { return [ 'numero_de_somme' => 'unique:personnels,numero_de_somme|exists:fonctionnaire,num_somme', 'cin' => 'unique:personnels,cin|exists:fon

在Laravel中指定exists验证规则时,是否有方法引用其他字段

我的请求:

public function rules()
    {

        return [
            'numero_de_somme' => 'unique:personnels,numero_de_somme|exists:fonctionnaire,num_somme',
            'cin' => 'unique:personnels,cin|exists:fonctionnaire,cin',

        ];
    }
在我的验证规则中,我希望能够确保:

  • num\u somme
    存在于
    fonctionnaire
    表中
  • cin
    存在于fonctionnaire表中,并且必须输入
    cin
    num\u somme
数量:12345 cin:s89745

数量:78945 cin:U10125

解释:例如

  • 第一种情况如果输入
    num_somme
    =12345和
    cin
    =U10125,则验证必须失败
  • 第二种情况如果输入
    num_somme
    =12345和
    cin
    =s89745,则验证必须成功
我希望这是有道理的


谢谢

我今天遇到了同样的需求,我想我有一个使用验证规则类的解决方案:

下面是我的场景:我有一个电子邮件验证表,我想确保传递的机器代码和激活代码存在于同一行中

确保包括
使用照明\验证\规则

$activationCode = $request->activation_code;                                   

$rules = [                                                                     
    'mc' => [                                                                  
        'required',                                                            
        Rule::exists('email_verifications', 'machineCode')                     
        ->where(function ($query) use ($activationCode) {                      
            $query->where('activationCode', $activationCode);                  
        }),                                                                    
    ],                                                                         
    'activation_code' => 'required|integer|min:5',                             
    'operating_system' => 'required|alpha_num|max:45'                          
];

exists方法中的第一个参数是表,第二个是我用于“mc”字段的自定义列名。我使用'use'关键字传递第二列我要检查的内容,然后在where子句中使用该字段。

我使用最简单的方法解决了它

  • 对于
    numero\u de\u somme
'numero_deu somme'=>'unique:personnels,numero deu somme存在:fonctionnaire,num_somme,cin'。请求::get('cin'),

  • 对于
    cin
“cin”=>“唯一:人员,cin存在:cin基金会,


PS。别忘了调用
使用lightize\Http\Request

您可以使用规则来验证多个列

包括:

使用照明\验证\规则

$activationCode = $request->activation_code;                                   

$rules = [                                                                     
    'mc' => [                                                                  
        'required',                                                            
        Rule::exists('email_verifications', 'machineCode')                     
        ->where(function ($query) use ($activationCode) {                      
            $query->where('activationCode', $activationCode);                  
        }),                                                                    
    ],                                                                         
    'activation_code' => 'required|integer|min:5',                             
    'operating_system' => 'required|alpha_num|max:45'                          
];
使用验证器

$AdminId = $request->AdminId;
$Validate = Validator::make($request->all(),[
        'TaxId' => [ 'required', Rule::exists('tax','id')                     
                                    ->where(function ($query) use ($AdminId) {                      
                                    $query->where('u_id', $AdminId);                  
                                    })], 
    ]);
if($Validate->fails())
        {`Your ERROR HERE`}
else
        {`SUCCESS`}
在我的示例中,我正在检查同一行和两列中的u_id和id

解释:例如

我的数据库在tax表中有2行

id=1,u\u id=1,tax=“GST”,value->8

id=2,u\u id=2,tax=“GST”,value->5

第一种情况如果输入id=2且u_id=1验证必须失败,因为此行属于u_id=2


第二种情况如果输入id=2且u_id=2验证必须成功

您可以简单地使用:

'request_input' => exists:table,col,alternative_col_1,alternative_val_1,alternative_col_2,alternative_val_2, ...'
SQL查询如下所示:

select count(*) as aggregate from `table` where `id` = [request_input] and `alternative_col1` = "alternative_val1" and `alternative_col2` = "alternative_val2"

在exista规则中有num_some,你又是指numo_de_some?