gpt4 book ai didi

php - laravel 如何验证数组索引和值

转载 作者:行者123 更新时间:2023-12-01 14:19:21 24 4
gpt4 key购买 nike

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

quantity[4]:11
quantity[2]:14

我必须同时验证指数和值(value),指数应该作为股票退出,id 和值(value)必须是整数且最小值为 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;
}

重点是查询 whereIn时比较库存计数结果(以降低成本)他们的 id 与 quantity 的 array_keys | .因为 quantity的索引存在于 stocks , $stockCntWithinArrIDs必须等于 count($ids) ,如果不是,至少有一个索引不是 stocks ID。

您可以使用 foreach ($ids)然后查询对应的 stock看看我的解决方案是否有效。但请 不要在生产环境中使用该解决方案。 :D

希望这有帮助!

已编辑:

见: https://laravel.com/docs/5.6/validation#custom-validation-rules

关于php - laravel 如何验证数组索引和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50694208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com