在Laravel中验证JSON数组

时间:2016-02-11 17:40:33

标签: php json laravel laravel-5 laravel-5.2

我有一个接收以下POST请求的控制器:

{
  "_token": "csrf token omitted",
  "order": [1,2,3,4,5,6,7,8]
}

如何使用验证器确保order中的元素是唯一的,并且在1到7之间?我尝试过以下方法:

$this->validate($request, [
    'order' => 'required|array',
    'order.*' => 'unique|integer|between:1,7'
]);

检查第一个子句,即使输入无效,也会通过第二个子句。

2 个答案:

答案 0 :(得分:5)

使用distinct rule

  

<强>不同

     

使用数组时,验证字段不得包含任何数组   重复值。

在您的情况下,它可能如下所示:

$this->validate($request, [
    'order' => 'required|array',
    'order.*' => 'distinct|integer|between:1,7'
]);

答案 1 :(得分:1)

unique validator关键字用于检查数据库中值的重复项。

您应该在这种情况下使用自定义验证器。

请参阅:https://laravel.com/docs/5.1/validation#custom-validation-rules