【发布时间】:2021-11-19 10:39:50
【问题描述】:
我的 api 验证存在一些问题。
我需要像这样发送一个 json 数组:
[
{
"acktime": "2021-09-25 08:45:07",
"temp": 15.6
},
{
"acktime": "2021-09-25 08:45:07",
"temp": 15.6
}
probably more array....
]
我想逐个验证数组并仅存储无效数据的有效数据返回错误,我尝试了一个 foreach cylce,但它将数组转换为对象,但 validate::make 只需要数组。
我试过这个:
$validator = Validator::make($request->all(), [
'*.acktime' => 'required',
'*.temp' => 'required|numeric'
]);
$validatedData = $validator->validated();
var_dump($validatedData);
return response()->json($validatedData);
但是如果我发送错误的数据,我只会得到错误而没有有效的数据,所以我尝试了这种方式:
foreach($datas as $data){
$arr = (array)$data;
$validator = Validator::make($arr, [
'acktime' => 'required',
'temp' => 'required|numeric'
]);
if ($validator->fails()) {
continue;
} else {
$newrawData = new rawData([
'acktime' => $data->acktime,
'temp' => $data->temp,
'synctime' => now()
]);
$newrawData->save();
}
}
return response('OK', 200); //or error if some data are not ok
}
以这种方式工作,机器人我不知道 get,一个可能的验证错误..(目前有一个 continue 用于继续循环)有什么建议吗?
【问题讨论】:
标签: laravel laravel-8 laravel-validation