使用foreach在laravel中进行批量更新

时间:2018-12-07 05:39:38

标签: laravel laravel-5.6

如何在不删除或替换旧记录的情况下更新海量记录。我的问题是最后插入的记录将替换为最新记录。

/*DB::table('syllabuses')
             ->where('course_id', $curse_id)
             ->Where('semster',$semesterid)
             ->delete();*/
               $Syllabus =   Syllabus::find($id);
                foreach ($data as $value) 
                {  
                    //$Syllabus =  new Syllabus;//
                     $Syllabus->slno = $value->SlNo;
                      $Syllabus->coursecode =$value->cousrecode;
                     $Syllabus->coursename =$value->coursename;
                     $Syllabus->credit =$value->credit;
                     $Syllabus->papertype=$value->papertype;
                     $Syllabus->deptoffering_name=$value->Deptoffer;
                     $Syllabus->deptoffering_id=$value->Department;
                     $Syllabus->dept_id = $details['depart'];
                     $Syllabus->save();

                }

1 个答案:

答案 0 :(得分:0)

请先尝试了解INSERT和UPDATE之间的区别。绝对更新查询替换相关记录的旧值。在查询中,您要更新相同的“课程提纲”。

$Syllabus = Syllabus::find($id);
    foreach ($data as $value) 
        {  
           //$Syllabus =  new Syllabus;//
             $Syllabus->slno = $value->SlNo;
             $Syllabus->coursecode =$value->cousrecode;
             $Syllabus->coursename =$value->coursename;
             $Syllabus->credit =$value->credit;
             $Syllabus->papertype=$value->papertype;
             $Syllabus->deptoffering_name=$value->Deptoffer;
             $Syllabus->deptoffering_id=$value->Department;
             $Syllabus->dept_id = $details['depart'];
             $Syllabus->save();

         }

在上面的代码中,您在foreach之外找到了课程提纲。然后,您更新在foreach中找到的记录。如果要更新许多“课程提纲”,请尝试以下操作:

foreach ($data as $value) 
        {  
             $Syllabus = Syllabus::find("SyllabusID");
             $Syllabus->slno = $value->SlNo;
             $Syllabus->coursecode =$value->cousrecode;
             $Syllabus->coursename =$value->coursename;
             $Syllabus->credit =$value->credit;
             $Syllabus->papertype=$value->papertype;
             $Syllabus->deptoffering_name=$value->Deptoffer;
             $Syllabus->deptoffering_id=$value->Department;
             $Syllabus->dept_id = $details['depart'];
             $Syllabus->save();

         }

否则,如果您想保留旧记录,请尝试使用以下代码在db中创建新记录

foreach ($data as $value) 
        {  
             $Syllabus = new Syllabus();
             $Syllabus->slno = $value->SlNo;
             $Syllabus->coursecode =$value->cousrecode;
             $Syllabus->coursename =$value->coursename;
             $Syllabus->credit =$value->credit;
             $Syllabus->papertype=$value->papertype;
             $Syllabus->deptoffering_name=$value->Deptoffer;
             $Syllabus->deptoffering_id=$value->Department;
             $Syllabus->dept_id = $details['depart'];
             $Syllabus->save();

         }

有关详细信息,请阅读laravel官方文档:https://laravel.com/docs/5.7/eloquent