【发布时间】:2018-04-02 21:24:49
【问题描述】:
有没有办法在不存在的情况下插入新记录并在存在的情况下更新记录?以下是我使用的代码。
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!');
}
这是我再次插入相同记录时的输出。 但我想要一个学生 ID 可能有很多课程代码但不能重复。所以我想检查学生是否有相同的课程或课程然后跳过或更新它并插入新记录。 请帮我。 谢谢。
【问题讨论】:
-
你也可以使用 sql 查询: $sql = "INSERT INTO {$_table} ({$_columns}) VALUES {$_values} ON DUPLICATE KEY UPDATE {$updates} "; DB::statement($sql);