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 (это зависит от вашего приложения)

Другие вопросы по тегам