Php laravel如何验证数组索引和值
我正在提交一个一维值数组,以便在laravel 5.6上进行处理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', ];
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