laravel 5.4 使用自定义规则验证数组
laravel 5.4 validate array with custom rule
我在验证需要自定义规则的字段数组时遇到问题。我有以下验证器:
$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',
]);
截止日期数组验证正常,但服务 ID returns 出现以下错误:
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。
提前致谢
默认情况下 Laravel 使用键作为 unique
角色,因为它是一个数组,键是 0、1、2 等等。解决方案是为唯一规则添加列名称,如下所示:
Rule::unique('order_services', 'id')->where('order_id', $request->order),
显然,在您的情况下,您可能需要 id
以外的其他列名称(这取决于您的应用程序)
我在验证需要自定义规则的字段数组时遇到问题。我有以下验证器:
$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',
]);
截止日期数组验证正常,但服务 ID returns 出现以下错误:
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。
提前致谢
默认情况下 Laravel 使用键作为 unique
角色,因为它是一个数组,键是 0、1、2 等等。解决方案是为唯一规则添加列名称,如下所示:
Rule::unique('order_services', 'id')->where('order_id', $request->order),
显然,在您的情况下,您可能需要 id
以外的其他列名称(这取决于您的应用程序)