Laravel 验证是否多次选择同一项目
Laravel validate if same item is selected more than once
在我的应用程序中,我有 add more
选定多个 devices
的功能。如果 user
选择相同的 device
两次或更多次,我需要显示一条错误消息。
这是我的代码。
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;
}
}
如果您只是检查数组中的重复值。您可以为此使用验证规则 distinct。
'devices.*.device_company_id' => [
'distinct',
// ...
]
如果您希望验证模型中的重复项,您可以使用规则 unique:model
感谢@Tommie。这是我的最终代码。
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;
}
}
我也找到了这个
在我的应用程序中,我有 add more
选定多个 devices
的功能。如果 user
选择相同的 device
两次或更多次,我需要显示一条错误消息。
这是我的代码。
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;
}
}
如果您只是检查数组中的重复值。您可以为此使用验证规则 distinct。
'devices.*.device_company_id' => [
'distinct',
// ...
]
如果您希望验证模型中的重复项,您可以使用规则 unique:model
感谢@Tommie。这是我的最终代码。
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;
}
}
我也找到了这个