【问题标题】:How to insert multiple rows at once laravel 5.3如何一次插入多行 laravel 5.3
【发布时间】:2017-12-09 14:55:16
【问题描述】:

我想插入一个带有 id 的数组:blade.php enter image description here

<tr>
<td class="text-left">{{$count}}</td>
<td class="text-left"><img src="{{ asset('/' . $data->image_file) }}" class="img-circle" width="35px" height="35px"/></td>
<td class="text-left">{{$data->student_id}}</td>
<td class="text-left">
    {{ App\Models\student_subject:: where('id', '=', $subject)->value('sub_name') }}
</td>

<td class="text-left"> <input type="text" class="form-control"  placeholder="Mark" name="sub_mark[]" max="100" data-parsley-max="100" required="" data-parsley-required-message ="Subject Mark is required" data-parsley-trigger="change focusout"> </td>

<td class="text-left"> <input type="text" class="form-control" placeholder="Class Test Mark" name="ct_mark[]" max="20" data-parsley-max="20" required="" data-parsley-required-message ="CT Mark is required" data-parsley-trigger="change focusout"> </td>

你可以在这里看到所有代码 enter link description here

当我尝试提交表单时,它会插入具有相同 ID 的行。 enter image description here

这是我的控制器

public function PostAddResult(Request $request) {
$student_id= $request->input('student_id');
$sub_name= $request->input('sub_name');
$class_name= Session::get('class_name');
$exam_id= Session::get('exam_name');

$sub_mark= $request->input('sub_mark');
$ct_mark= $request->input('ct_mark');

 $i = 0;
 foreach($sub_mark as $marks){

    $student_res = new student_results();
    $student_res->student_id = $student_id;
    $student_res->class_name = $class_name;
    $student_res->sub_name = $sub_name;
    $student_res->sub_mark = $marks;
    $student_res->ct_mark = $ct_mark[$i];
    $student_res->exam_id = $exam_id;
    $student_res->save();

 }

 $notification = array(
            'message'=>'Student Marks Add Successfully',
            'alert-type'=>'success',
        );

return redirect('/addResult')->with($notification);

}

【问题讨论】:

  • 请尝试编辑您的帖子以获得更好的格式。
  • 您的html表单代码不清楚。请至少显示一整行,以便我们查看您指定 id 的位置
  • @camilo 我已经这样做了..
  • @ Joshua Kisubi- 你可以在这里看到所有代码 plz - pastebin.com/ythCQbRp

标签: php laravel laravel-5.3


【解决方案1】:

您希望为每条记录获取单独的学生 ID 和科目名称,因此请更改此设置:

<input type="hidden" name="student_id" value="{{ $data->student_id }}">
<input type="hidden" name="sub_name" value="{{ $subject }}">

收件人:

<input type="hidden" name="student_id[]" value="{{ $data->student_id }}">
<input type="hidden" name="sub_name[]" value="{{ $subject }}">

然后您就可以遍历分数、学科名称和学生 ID:

for ($i = 0; $i < count($sub_mark); $i++) {
    $student_res = new student_results();
    $student_res->student_id = $student_id[$i];
    $student_res->class_name = $class_name;
    $student_res->sub_name = $sub_name[$i];
    $student_res->sub_mark = $sub_mark[$i];
    $student_res->ct_mark = $ct_mark[$i];
    $student_res->exam_id = $exam_id;
    $student_res->save();
 }

【讨论】:

  • Model::insert() 最好插入多行
  • @user2486 I totally agree,但这与问题无关。我的意思是让 OP 先学习基础知识,然后他就可以转到the best practices
  • @Alexey Mezenin - for ($i = 0; $i
  • @Nesar 哦,是的,对不起。固定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
  • 2016-08-13
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
相关资源
最近更新 更多