Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过关联数组进行Laravel循环,然后保存到数据库_Php_Arrays_Json_Laravel - Fatal编程技术网

Php 通过关联数组进行Laravel循环,然后保存到数据库

Php 通过关联数组进行Laravel循环,然后保存到数据库,php,arrays,json,laravel,Php,Arrays,Json,Laravel,我是一名初学者,目前正在学习Vue js和Laravel。因此,我试图找出如何通过axios创建一个POST请求,然后将多个条目插入到我的数据库中 我有一个数组,例如: { "comakers": [ { "name": "Sample", "email": "sample@email.com" }, { "name": "Test", "email": "test@email.com" } ] } 然后在

我是一名初学者,目前正在学习Vue js和Laravel。因此,我试图找出如何通过axios创建一个POST请求,然后将多个条目插入到我的数据库中

我有一个数组,例如:

{
  "comakers": [
    {
      "name": "Sample",
      "email": "sample@email.com"
    },
    {
      "name": "Test",
      "email": "test@email.com"
    }
  ]
}
然后在我的laravel控制器上,我想做这样的foreach循环

public function update(Request $request, $id)
{
    $data = $request->all();

    foreach ($data as $comaker){
        $nominate = new Nominate();
        $nominate->loan_application_id = $id;
        $nominate->comaker_name = $comaker->name;
        $nominate->comaker_email = $comaker->email;

        $nominate->save();
    }

}
$data = $request->all();

foreach ($data['comakers'] as $comaker){
    $nominate = new Nominate();
    $nominate->loan_application_id = $id;
    $nominate->comaker_name = $comaker['name'];
    $nominate->comaker_email = $comaker['email'];

    $nominate->save();
}
但是我得到一个错误“试图获取非对象的属性'name'”。有人能告诉我如何实现这一点吗

顺便说一句,我正试图从我的控制器使用更新功能。基本上,我想(插入新的,如果不存在)或(编辑时,有一个现有的数据)。我在这里的做法正确吗

(更新)

当我尝试获取
$data=$request->all()的值时,laravel dd或dump显示了这一点

我不认为
all()
将返回一个对象数组,而是一个关联数组。因此,您可以尝试以下方法:

// Notice that you should use `json()` since the data is in json format
$data = $request->json()->all();

foreach ($data['comakers'] as $comaker) {
  $nominate = new Nominate();
  $nominate->loan_application_id = $id;
  $nominate->comaker_name = $comaker['name'];
  $nominate->comaker_email = $comaker['email'];

  $nominate->save();
}
当然,您也可以将结果投射到如下对象:

foreach ($data['comakers'] as $item) {
  $comaker = (object) $item;
  $nominate = new Nominate($data);
  ...
我还建议您只需使用
var\u dump()
打印结果的内容,以查看其实际包含的内容,例如:

var_dump($data);
我不认为
all()
将返回一个对象数组,而是一个关联数组。因此,您可以尝试以下方法:

// Notice that you should use `json()` since the data is in json format
$data = $request->json()->all();

foreach ($data['comakers'] as $comaker) {
  $nominate = new Nominate();
  $nominate->loan_application_id = $id;
  $nominate->comaker_name = $comaker['name'];
  $nominate->comaker_email = $comaker['email'];

  $nominate->save();
}
当然,您也可以将结果投射到如下对象:

foreach ($data['comakers'] as $item) {
  $comaker = (object) $item;
  $nominate = new Nominate($data);
  ...
我还建议您只需使用
var\u dump()
打印结果的内容,以查看其实际包含的内容,例如:

var_dump($data);

我认为您在Json变量上执行foreach,而不是其中的comakers对象

foreach ($data->comakers as $comaker) {
        $nominate = new Nominate();
        $nominate->loan_application_id = $id;
        $nominate->comaker_name = $comaker->name;
        $nominate->comaker_email = $comaker->email;

        $nominate->save();
}

我认为您在Json变量上执行foreach,而不是其中的comakers对象

foreach ($data->comakers as $comaker) {
        $nominate = new Nominate();
        $nominate->loan_application_id = $id;
        $nominate->comaker_name = $comaker->name;
        $nominate->comaker_email = $comaker->email;

        $nominate->save();
}

当您尝试循环时,忘记了
comaker
键,您应该这样做

public function update(Request $request, $id)
{
    $data = $request->all();

    foreach ($data as $comaker){
        $nominate = new Nominate();
        $nominate->loan_application_id = $id;
        $nominate->comaker_name = $comaker->name;
        $nominate->comaker_email = $comaker->email;

        $nominate->save();
    }

}
$data = $request->all();

foreach ($data['comakers'] as $comaker){
    $nominate = new Nominate();
    $nominate->loan_application_id = $id;
    $nominate->comaker_name = $comaker['name'];
    $nominate->comaker_email = $comaker['email'];

    $nominate->save();
}

当您尝试循环时,忘记了
comaker
键,您应该这样做

public function update(Request $request, $id)
{
    $data = $request->all();

    foreach ($data as $comaker){
        $nominate = new Nominate();
        $nominate->loan_application_id = $id;
        $nominate->comaker_name = $comaker->name;
        $nominate->comaker_email = $comaker->email;

        $nominate->save();
    }

}
$data = $request->all();

foreach ($data['comakers'] as $comaker){
    $nominate = new Nominate();
    $nominate->loan_application_id = $id;
    $nominate->comaker_name = $comaker['name'];
    $nominate->comaker_email = $comaker['email'];

    $nominate->save();
}


像这样的错误消息通常有一个行号,可以告诉您在哪里可以找到错误。请在这里发布时显示所有错误消息好吗Hi Noah,你能用axios post更新你的问题吗,我想你在requestDo a
var_dump($data)中找不到数组了
并向我们显示输出please@RiggsFollyI添加了questionError消息上的转储日志,这样的错误消息通常有一个行号,为您提供查找错误的线索。请在这里发布时显示所有错误消息好吗Hi Noah,你能用axios post更新你的问题吗?我想你找不到请求中的数组了。请执行
var\u dump($data)
并向我们显示输出please@RiggsFollyI不幸的是,这样做会显示另一个错误“尝试获取非对象的属性'comakers'”相反,我看到了您的vardump,您无法获取非对象的属性。由于它是一个数组,您应该为foreach尝试
$data['comakers']
,并在循环中尝试
$comaker['name']
,不幸的是,这样做会显示另一个错误”试图获取非对象的属性'comakers'”相反,我看到了你的vardump,你无法获取非对象的属性。因为它是一个数组,你应该尝试
$data['comakers']
foreach和
$comaker['name']
在loopHey Cyclonecode中,我添加了一行
$comaker=(对象)$comaker;
在foreach之后,它实际上解决了问题。你能把它加回去吗?我可以接受你的答案吗?非常感谢你的帮助!@Noah-是的,我又加了一次,但唯一起作用的原因是,数据不是我在答案顶部所说的对象数组。数据是一个关联数组,所以第一个解决方案是在上也应该可以工作。嘿,Cyclonecode,我添加了行
$comaker=(object)$comaker;
在foreach之后,它实际上解决了问题。你能把它加回去吗?我可以接受你的答案吗?非常感谢你的帮助!@Noah-是的,我又加了一次,但唯一起作用的原因是,数据不是我在答案顶部所说的对象数组。数据是一个关联数组,所以第一个解决方案是在上也应该可以。我认为这不起作用,因为结果中没有对象,只有关联数组。你是对的,Laravel将json解码为关联数组,我将更新我的回答。我认为这不起作用,因为结果中没有对象,只有关联数组。你是对的,Laravel将json解码为关联数组,我会更新我的答案