php - 无法遍历 Laravel POST 中的对象数组
问题描述
我有一个从 Vue Axios 函数发布的对象数组,我希望循环并保存到数据库中。它们是一个问题的答案。
我传入了$data
其中的答案对象数组(每个对象都有一个内容、正确和标记属性),以及$id
它们所属的问题。当我返回$data,
时,它会显示具有所有正确属性的对象数组。当我返回时$data[0]
,我可以访问第一个对象。但是当我尝试如下 foreach 时,它抱怨$content
说不存在。运行也出错count()
。$data
这里有什么问题?
Route::post('answers/{id}', function (Request $data, $id) {
foreach ($data as $value) {
$post[] = [
'user_id' => 1,
'question_id' => $id,
'content' => $value->content,
'correct' => $value->correct,
'mark' => $value->mark
]);
}
Answer::save($post);
});
解决方案
您正在尝试迭代孔$request
对象,它是Request类的一个实例。要访问接收到的值,首先获取它们:
// To get all the data
$data = $request->all();
// or..
// To get just a specific value
$data = $request->get('key');
// or..
// only a list of allowed elements
$data = $request->only('here', 'goes', 'your', 'keys');
因此,如果您的前端在 key 下发送一组项目items
。就像上面提到的那样得到它们:
$items = $request->get('items');
然后你可以使用foreach()
:
$items = $request->get('items');
foreach($items as $item)
{
// your operations
}
推荐阅读
- swift - 对 Struct 的 NSString 值求和
- node.js - 使用nodemailer发送电子邮件时如何设置“发件人”
- android - 如何从 Android 原生应用程序中获取 Google 电子表格值(2020 年)
- delphi - 如何设置 Mock 以测试是否根据 CUT 中的条件调用方法
- jmeter - 如何解决 Web 套接字 I/O 错误:jmeter 中的连接被拒绝?
- javascript - 在 Xamarin.Forms iOS 中的 Javascript 和 WebView 本机代码之间进行通信
- blazor - Blazor Web 程序集重定向到控制器
- javascript - Puppeteer - 测试页面的不同选择器
- javascript - 将 JSON 文件绑定到 Echarts(JQuery 获取)
- google-bigquery - 通过 CLI 将存储桶中的 AVRO 加载到具有日期分区的 BigQuery 中