无法在Laravel POST中遍历对象数组

时间:2019-02-10 22:39:16

标签: php laravel eloquent

我有一个对象数组,这些对象是从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);
});

1 个答案:

答案 0 :(得分:2)

您正在尝试遍历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');

因此,如果您的前端在键items下发送了一组项目。像上面提到的那样获得它们:

$items = $request->get('items');

然后您可以使用foreach()

$items = $request->get('items');

foreach($items as $item)
{
    // your operations
}

您可以在Retrieving Input中了解有关documentation的更多信息。