Php Laravel验证:存在两列同一行
在Laravel中指定exists验证规则时,是否有方法引用其他字段 我的请求: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
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
存在于fonctionnaire表中,并且必须输入cin
在cin
num\u somme
- 第一种情况如果输入
=12345和num_somme
=U10125,则验证必须失败cin
- 第二种情况如果输入
=12345和num_somme
=s89745,则验证必须成功cin
谢谢我今天遇到了同样的需求,我想我有一个使用验证规则类的解决方案: 下面是我的场景:我有一个电子邮件验证表,我想确保传递的机器代码和激活代码存在于同一行中 确保包括
使用照明\验证\规则代码>
$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?