laravel 5.4 проверяет массив с пользовательским правилом
У меня проблемы с проверкой массива полей, для которых требуется пользовательское правило. У меня есть следующий валидатор:
$validator = Validator::make($request->all(), [
'order' => 'required',
'service_id.*' => Rule::unique('order_services')->where('order_id', $request->order),
'due_date.*' => 'required|date',
'vendor' => 'required|integer',
'instructions' => 'string|nullable',
'lock_box' => 'string|nullable',
]);
Массив сроков выполнения проверяется просто отлично, но идентификатор службы возвращает следующую ошибку:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'service_id.0' in 'where clause' (SQL: select count(*) as aggregate from `order_services` where `service_id`.`0` = 10 and `order_id` = 100f)
Правило идентификатора сервиса предотвращает дублирование записей с одинаковым номером заказа и идентификатором сервиса
Правило работает должным образом при проверке одного идентификатора службы, я просто не уверен, как проверять несколько идентификаторов служб одновременно.
заранее спасибо
1 ответ
По умолчанию Laravel использует ключ для unique
роль и потому что это массив, ключи 0, 1, 2 и так далее. Решением является добавление имени столбца для уникального правила, например:
Rule::unique('order_services', 'id')->where('order_id', $request->order),
Очевидно, в вашем случае вам может понадобиться другое имя столбца, чем id
(это зависит от вашего приложения)