Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel如何验证数组索引和值_Php_Laravel_Laravel 5_Laravel Validation - Fatal编程技术网

Php laravel如何验证数组索引和值

Php laravel如何验证数组索引和值,php,laravel,laravel-5,laravel-validation,Php,Laravel,Laravel 5,Laravel Validation,我正在提交一个一维值数组,以便在laravel 5.6上进行处理 quantity[4]:11 quantity[2]:14 我必须验证指数和值,指数应该作为股票存在,id和值必须是整数,最小值为1 我试过了 public function rules() { $rules = [ 'quantity.*' => 'exists:stocks,id', 'quantity' => 'required|integer|min:1', ];

我正在提交一个一维值数组,以便在laravel 5.6上进行处理

quantity[4]:11
quantity[2]:14
我必须验证指数和值,指数应该作为股票存在,id和值必须是整数,最小值为1

我试过了

public function rules()
{
    $rules = [
       'quantity.*' => 'exists:stocks,id',
       'quantity' => 'required|integer|min:1',
    ];

    return $rules;
}

但是它只验证值而不是索引,请分享您的想法和评论。

检查此项以获取数组唯一值

我看不到任何可以使用默认Laravel验证来验证数组索引的地方。这就是为什么我们需要编写一个自定义的

public function rules()
{
    $rules = [
       'quantity.*' => 'required|integer|min:1',
       'quantity' => [
           'required',
           'min:1', // make sure the input array is not empty <= edited
           'array',
           function($attribute, $value, $fail) {
               // index arr
               $ids = array_keys($value);
               // query to check if array keys is not valid
               $stockCntWithinArrIDs = StockModelFullNameWhaterver::whereIn('id', $ids)->count();
               if ($stockCntWithinArrIDs != count($ids))
                   return $fail($attribute.' is invalid.');  // -> "quantity is invalid"
           }
       ],
    ];

    return $rules;
}
公共功能规则()
{
$rules=[
'数量。*'=>'必需|整数|最小值:1',
“数量”=>[
“必需”,
'min:1',//确保输入数组不是空的count();
如果($stockCntWithinArrIDs!=计数($id))
返回$fail($attribute.'is invalid');//->“数量无效”
}
],
];
返回$rules;
}
主要的一点是在查询
时比较库存盘点结果,其中
(以降低成本)其id与
数量
的数组键。由于
数量
的索引存在于
库存
中,
$stockCntWithinArrIDs
必须等于
计数($id)
,否则,至少有一个索引不是
库存
id

您可以使用
foreach($id)
然后查询相应的
库存
,查看我的解决方案是否有效。但请不要在生产环境中使用该溶液D

希望这有帮助

编辑:


请参阅:

我有一个一维阵列您使用的是哪种版本的Laravel?@Ross Laravel 5.6thanks,您的解决方案已准备好用于生产环境?(只是好奇)事实上,我从未见过这样的输入,我的意思是数组索引存在于表中,所以答案是否定的。但我以前在项目中写过很多自定义规则。我相信它是可以使用的D