如果不存在,是否有任何方法插入新記錄並更新記錄(如果存在)?以下是我使用的代碼。如果不存在,插入新記錄並更新(如果存在),laravel 5.4
public function store(Request $request)
{
$inputs = $request->all();
$this->validate($request,[
'course_code'=>'required'
]);
$batch = $request->batch;
$students = User::select('student_id')->where('batch', $batch)->get();
$course_codes = $inputs['course_code'];
$data=[];
foreach ($students as $student) {
foreach ($course_codes as $course_code) {
$data[]=[
'batch' => $batch,
'student_id' => $student->student_id,
'semester' => $inputs['semester'],
'course_code' => $course_code,
"created_at" => \Carbon\Carbon::now(), # \Datetime()
"updated_at" => \Carbon\Carbon::now() # \Datetime()
];
}
}
DB::table('assign_batches')->insert($data);
return redirect('/admin/assign/batch/create')->with('message', 'A batch has been assigned to courses successfully!');
}
這是我的輸出,當我再次插入相同的記錄。 但我想要一個學生證可能有很多課程代碼,但不能重複。所以我想檢查學生是否有相同的課程或課程,然後跳過或更新它並插入新的記錄。 請幫幫我。 謝謝。
您還可以使用SQL查詢: $ SQL =「INSERT INTO {$ _table}({$ _columns })VALUES {$ _values}在DUPLICATE KEY UPDATE {$ updates}「; DB :: statement($ sql); – Shan