Reputation: 860
I have 4 fields in request id, CID, PID, item_number
where
and if CID present either PID or item_number is required
below is what I my inputs and what I tried for validation
"CID":40,
"PID": 1210111037
'id' => 'required_without:CID|integer',
'CID' => 'required_without:id|integer',
'PID' => 'required_with:CID|integer',
'item_number' => 'required_with:CID|integer',
'id' => 'required_without:CID|integer',
'CID' => 'required_without:id|integer',
'PID' => 'required_without:item_number|required_with:CID|integer',
'item_number' => 'required_without:PID|required_with:CID|integer',
the above both throws an error The item_number is required when Customer id is present.
Upvotes: 2
Views: 1589
Reputation: 29
You can check laravel required_if validation rule
'id' => 'required_without:CID|integer',
'CID' => 'required_if:id,==,""|integer',
'PID' => 'required_if:CID,!=,""|integer',
'item_number' => 'required_if:PID,==,""|integer'
Upvotes: 1
Reputation: 34914
You can check Validation rule 'required_without_all'
'id' => 'required_without:CID|integer',
'CID' => 'required_without:id|integer',
'PID' => 'required_without_all:id,item_number|integer',
'item_number' => 'required_without_all:id,PID|integer'
You can also create dynamic rule array.
$rules = [
'id' => 'required_without:CID|integer',
'CID' => 'required_without:id|integer'
];
if($request->CID ?? false){
if($request->PID || $request->$request->item_number){ // I assume both are exist not will not be undefined.
$rules['PID'] = 'integer';
$rules['item_number'] = 'integer';
}else{
$rules['PID'] = 'required_with:CID|integer';
$rules['item_number'] = 'required_with:CID|integer';
}
}
Upvotes: 3