Массовое обновление в laravel с использованием foreach - PullRequest
0 голосов
/ 07 декабря 2018

Как обновить массовые записи без удаления или замены старых вставленных записей.Здесь моя проблема заключается в том, что последняя вставленная запись заменит последние записи.

/*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 голосов
/ 07 декабря 2018

Пожалуйста, попробуйте сначала понять разницу между INSERT и UPDATE.Определенно обновленный запрос заменяет старые значения соответствующей записи.В своем запросе вы связываете обновление того же "Syllabus".

$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.Если вы хотите обновить множество «Syllabus», попробуйте следующее:

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();

         }

Или, если вы хотите сохранить старые записи, попробуйте создать новые записи в БД, используя следующий код

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...