首页 > 解决方案 > 无法遍历 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);
});

标签: phplaraveleloquent

解决方案


您正在尝试迭代孔$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
}

您可以在文档中阅读有关检索输入的更多信息。


推荐阅读