在Laravel中指定存在的验证规则时,有没有办法引用另一个字段?
我的要求:
public function rules()
{
return [
'numero_de_somme' => 'unique:personnels,numero_de_somme|exists:fonctionnaire,num_somme',
'cin' => 'unique:personnels,cin|exists:fonctionnaire,cin',
];
}
在我的验证规则中,我希望能够确保:
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,验证必须成功我希望这是有道理的。
谢谢
答案 0 :(得分:3)
我今天遇到了同样的需求,我认为我有一个使用验证规则类的解决方案:Rule example。
以下是我的方案:我有一个电子邮件验证表,我想确保在同一行上存在传递的机器代码和激活码。
请务必加入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'
];
exists方法中的第一个参数是表格,第二个参数是我用于' mc'的自定义列名称。领域。我使用'使用'来传递我要检查的第二列。关键字然后在where子句中使用该字段。
答案 1 :(得分:1)
我设法用最简单的方法解决它
numero_de_somme
'numero_de_somme' => 'unique:personnels,numero_de_somme|exists:fonctionnaire,num_somme,cin,'.Request::get('cin'),
cin
'cin' => 'unique:personnels,cin|exists:fonctionnaire,cin',
PS 。别忘了打电话给use Illuminate\Http\Request;
答案 2 :(得分:1)
您可以使用规则来验证多列。
包含:
use Illuminate\Validation\Rule;
use Validator;
$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,它们在同一行和两列中。
说明:例如
我的数据库有2行税收表
id = 1,u_id = 1,税收=“ GST”,值-> 8
id = 2,u_id = 2,税费=“ GST”,值-> 5
第一种情况,如果输入 id = 2并且u_id = 1 ,则验证必须失败,因为该行属于u_id = 2。
第二种情况,如果输入的 id = 2和u_id = 2 ,则验证必须成功
答案 3 :(得分:0)
您可以简单地使用它:
'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"