【问题标题】:How to foreach in store method in laravel?如何在 laravel 中 foreach in store 方法?
【发布时间】:2021-10-14 05:13:38
【问题描述】:

我在dd($request->all())中有以下数组

"question_id" => array:2 [▼
    0 => "1"
    1 => "2"
  ]
  "answers" => array:2 [▼
    0 => "1 year"
    1 => "yes"
  ]

我需要循环这个数组以存储在this table

这个请求来自我创建的动态表单。 这个方法我试过了

$data = $request->all();
        $questions = $data['question_id'];
        $answers = $data['answers'];
        $dataanswer = [];
        foreach($answers as $answer){
            $dataanswer[] = [                
                'question_id'   => $questions,
                'answer'        => $answers
            ];            
      }
         Answers::insert($dataanswer);

但上面写着Array to string conversion,请帮帮我。

【问题讨论】:

  • 因为$questions$answers 中有数组,所以'question_id' => $questions, 会尝试将数组插入question_id 列
  • @porloscerrosΨ 感谢您的回答,我如何从请求的数组中获取值?所以我可以放入表中
  • 这取决于DB中表的结构。 @sta 的答案很好,您不需要循环,我认为这就是我要回答的问题的提出方式。如果该答案出于任何原因对您没有帮助,请通过添加更多信息来编辑问题

标签: laravel loops foreach store


【解决方案1】:

我最终使用了这种方法,并且效果很好

感谢大家的回答,大家保持健康

$count = count($request->input('question_id'));
        for($i = 0 ;$i < $count ; $i++){
            $questions = $data['question_id'][$i];
            $answers = $data['answers'][$i];

            Answers::create([
                    'application_id'    => $applicant['id'],
                    'question_id'       => $questions,
                    'answer'            => $answers
                ]);
        }

【讨论】:

    【解决方案2】:

    如果您的问题和答案顺序正确(例如 1 => '1 year' 和 2 => 'yes),那么:

    $data = collect($request->input('question_id'))
        ->combine($request->input('answers'));
    
    Model::insert($data);
    

    【讨论】:

      【解决方案3】:

      你可以使用PHP的array_combine()函数:

      $data = $request->all();
              $questions = $data['question_id'];
              $answers = $data['answers'];
      
      Answers::insert(array_combine($questions, $answers));
      

      这是demo

      【讨论】:

      • 感谢回答,看来我问错了,我需要的是如何从上面的数组中取出值,以便循环插入到表中。跨度>
      猜你喜欢
      • 2014-08-16
      • 2022-11-23
      • 2018-05-07
      • 2018-02-28
      • 1970-01-01
      • 2013-12-05
      • 2021-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多