Laravel雄辩如何保存多维数组

时间:2017-12-17 13:03:16

标签: php arrays laravel multidimensional-array

帮助请理解如何保存此类数据: 有一个测验的网站,以及创建无限数量问题的可能性

enter image description here

视图create.blade.php的一部分:

<div class="form-group {{ $errors->has('question_title') ? 'has-error' : ''}}">
    <label for="question_title1" class="col-md-4 control-label">{{ 'question №1' }}</label>
    <div class="col-md-4">
<!--
        <input type="hidden" name="question_number[]" value="1"> 
-->
        <input class="form-control" name="question_title1" type="text" id="question_title" 
        value="" required>

    {!! $errors->first('question_title1', '<p class="help-block">:message</p>') !!}
    </div> <br>  <br>




A.  <input class="" name="question_description1[]" type="text" id="question_description1" value="a1"> 
    <input type="checkbox" name="question_answer1[]" value="1" checked> <br>

B. <input class="" name="question_description1[]" type="text" id="question_description1" value="a2"> 
    <input type="checkbox" name="question_answer1[]" value="2"> <br>

C. <input class="" name="question_description1[]" type="text" id="question_description1" value="a3"> 
    <input type="checkbox" name="question_answer1[]" value="3"> <br>

D. <input class="" name="question_description1[]" type="text" id="question_description1" value="a4"> 
    <input type="checkbox" name="question_answer1[]" value="4"> <br>    

</div>

控制器QuizController.php的一部分:

   public function store(StoreQuizRequest $request)
    {

    $data_quiz = $request->only(
    'title', 'description', 'category', 'published',  'access', 'start_date', 'end_date',
    'duration','show_answers');

    $data_quiz['user_id'] = Auth::user()->id;

    $quiz = Quiz::create($data_quiz);




 $question_1['question_title']=$request->question_title1;
 $question_1['question_description']=implode('|&-&|',$request->question_description1);
 $question_1['question_answer']=implode('|',$request->question_answer1);
 $question_1['quiz_id'] = $quiz->id;


 $question_2['question_title']=$request->question_title2;
 $question_2['question_description']=implode('|&-&|',$request->question_description2);
 $question_2['question_answer']=implode('|',$request->question_answer2);
 $question_2['quiz_id'] = $quiz->id;



 $question_save1 = Question::create($question_1);
 $question_save2 = Question::create($question_2);

 return redirect('quiz')->with('flash_message', 'Quiz created!');


    }

如何在控制器中创建循环以保存所有问题以及DB的答案?谢谢你的回答!

1 个答案:

答案 0 :(得分:1)

让我们看一下:How do I create arrays in a HTML

您可以创建这样的表单,如果添加了更多问题,则复制表单组:

<div class="form-group">
    ....
    <input name="question_title[]" />

    A. <input name="question_descriptionA[]" type="text" id="question_descriptionA" value="a1" />
    <input type="checkbox" name="question_answerA[]" value="1" checked /> <br />

    B. <input name="question_descriptionB[]" type="text" id="question_descriptionB" value="a2" />
    <input type="checkbox" name="question_answerB[]" value="2" /> <br />

    C. <input name="question_descriptionC[]" type="text" id="question_descriptionC" value="a3" />
    <input type="checkbox" name="question_answerC[]" value="3" /> <br />

    D. <input name="question_descriptionD[]" type="text" id="question_descriptionD" value="a4" />
    <input type="checkbox" name="question_answerD[]" value="4" /> <br />
    ....
</div>

您可以按如下方式访问请求数据:

$data = $request->only('question_title',
    'question_descriptionA', 'question_answerA', 
    'question_descriptionB', 'question_answerB', 
    'question_descriptionC', 'question_answerC', 
    'question_descriptionD', 'question_answerD');