laravel 5.4使用自定义规则验证数组

时间:2017-11-11 17:25:21

标签: php laravel laravel-5 laravel-5.4 laravel-validation

我无法验证需要自定义规则的字段数组。我有以下验证器:

$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)

服务ID规则可防止具有相同订单号和服务ID的重复记录

在验证单个服务ID时,规则按预期工作,我只是不确定如何同时验证多个服务ID。

提前致谢

1 个答案:

答案 0 :(得分:0)

默认情况下,Laravel使用unique角色的键,因为它是一个数组,键是0,1,2等等。解决方案是添加唯一规则的列名,如下所示:

Rule::unique('order_services', 'id')->where('order_id', $request->order),

显然,在您的情况下,您可能需要其他列名而不是id(这取决于您的应用程序)