Laravel 验证:存在两列同一行

Mil*_*ETE 2 php validation rules laravel

在 Laravel 中指定存在验证规则时,是否可以引用另一个字段?

我的请求 :

public function rules()
    {

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

        ];
    }
Run Code Online (Sandbox Code Playgroud)

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

  • num_somme存在于fonctionnaire表中
  • cin存在于 fonctionnaire 表中,并且cin输入必须在num_somme

num_somme : 12345 cin : s89745

num_somme : 78945 cin : U10125

解释:例如

  • 第一种情况,如果输入num_somme= 12345 且cin= U10125,则验证必须失败
  • 第二种情况如果输入num_somme= 12345 和cin= s89745 验证必须成功

我希望这是有道理的。

谢谢

Ali*_*N11 16

你可以简单地使用这个:

'request_input' => exists:table,col,alternative_col_1,alternative_val_1,alternative_col_2,alternative_val_2, ...'
Run Code Online (Sandbox Code Playgroud)

SQL 查询如下:

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


roe*_*rjo 6

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

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

务必包括 use Illuminate\Validation\Rule;

$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'                          
];
Run Code Online (Sandbox Code Playgroud)

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