Reputation: 1781
In my application I have add more
functionality for selected multiple devices
. I need to show an error message if the user
has selected the same device
two or more times.
Here is my code.
class ValidateDeviceRequest extends FormRequest
{
private $data = [];
public function __construct()
{
$this->data = request()->all();
}
public function rules()
{
$rules = [
'devices' => ['required', 'array'],
'devices.*.device_company_id' => [
'required',
'integer',
'exists:device_companies,id,company_id,' . session()->get('COMPANY_ID')
],
];
foreach($this->data['devices'] as $key => $array)
{
$rules["devices.{$key}.device_id"] = [
'required',
'integer',
"exists:devices,id,device_company_id," . @$array["device_company_id"]
];
}
# returning
return $rules;
}
}
Upvotes: 0
Views: 1084
Reputation: 1781
Thanks to @Tommie. Here is my final code.
class ValidateDeviceRequest extends FormRequest
{
private $data = [];
public function __construct()
{
$this->data = request()->all();
}
public function rules()
{
$rules = [
'devices' => ['required', 'array'],
'devices.*.device_company_id' => [
'required',
'integer',
'exists:device_companies,id,company_id,' . session()->get('COMPANY_ID')
],
'devices.*.device_company_id' => [
'required',
'distinct',
]
];
foreach($this->data['devices'] as $key => $array)
{
$rules["devices.{$key}.device_id"] = [
'required',
'distinct',
'integer',
"exists:devices,id,device_company_id," . @$array["device_company_id"]
];
}
# returning
return $rules;
}
}
I also found this Laravel array validation for unique attribute in array but not required to be unique in table
Upvotes: 1