php - 在 Laravel 中将数组值插入数据库

标签 php mysql arrays laravel multidimensional-array

我有 8 个不同的问题,这些问题是随机来自数据库的。

现在我想将 question_iduser_iden_answer 插入到 en_answers 表中。

数据已插入,但出现了一些错误,例如 - 第一个是,它仅插入了一行值,第二个是,问题 ID 不正确。

我试过像下面这样的东西。请有人帮助纠正 Controller 方法 -

index.blade.php -

<form action="{{ url('en-question-answer') }}" method="POST">
       {{ csrf_field() }}
  <?php 
    $count=1;
  ;?>
  @foreach($equestions as $equestionType)
      @foreach($equestionType as $key => $equestion)
          <p>{{ $equestion->question }}</p>
          <input type="hidden" name="question_id[{{$count}}]" value="{{ $equestion->id }}">
          <label class="radio-inline">
           <input type="radio" name="en_answer[{{$count}}]" value="{{ $equestion->option1 }}">{{ $equestion->option1 }}
          </label>
           <label class="radio-inline">
           <input type="radio" name="en_answer[{{$count}}]" value="{{ $equestion->option2 }}">{{ $equestion->option2 }}
           </label>
             <hr>
    <?php $count++; ?>
       @endforeach
   @endforeach      
  <button type="submit" class="btn btn-primary btn-sm pull-right">Submit</button></form>

在我的 Controller 中-

    public function store(Request $request, User $user){
    $user_id = Sentinel::getUser()->id;

    $answer = new EnAnswer;
    $answer->user_id     = $user_id;

    $data = Input::get();
    for($i = 1; $i < count($data['en_answer']); $i++) {
        $answer->en_answer     = $data['en_answer'][$i];
    }
    for($i = 1; $i < count($data['question_id']); $i++) {
        $answer->question_id     = $data['question_id'][$i];
    }

    //dd($answer);
    //return $answer;
    $answer->save();
    return redirect('submitted')->with('status', 'Your answers successfully submitted');

}

最佳答案

您只向数据库中插入了一个答案,即最后一个。此外,您可以准备数据并通过一个查询插入所有答案:

public function store(Request $request)
{
    for ($i = 1; $i < count($request->en_answer); $i++) {
        $answers[] = [
            'user_id' => Sentinel::getUser()->id,
            'en_answer' => $request->en_answer[$i],
            'question_id' => $request->question_id[$i]
        ];
    }
    EnAnswer::insert($answers);
    return redirect('submitted')->with('status', 'Your answers successfully submitted');
}  

关于php - 在 Laravel 中将数组值插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48128471/

相关文章:

php - Wordpress - 条件与父术语

PHP:在类中使用数据库

php - Gearman:在同一台机器上运行客户端和工作人员?

Mysql - 带日期的子查询等

python - 如何用 N 维屏蔽 "crop"多维 numpy 数组?

php - .htaccess 和 mod_rewrite 到使用不同标准的平面 URL

javascript - POST 后选择 ="selected"?

mysql - 将日期/时间添加到 MySQL 表?

javascript - 从二进制的有符号 2 的补码中获取十进制

java - 如何从 arrays.xml 文件中获取字符串数组