mysql - Upsert 仅插入而不更新现有字段
问题描述
我正在尝试将出勤率添加到出勤表中,如果给定日期和学生 ID 的出勤率已经在表中,我需要更新出勤类型。
但是 upsert 只是插入,它永远不会更新。
SmStudentAttendance::upsert($studentRows, ['student_id', 'attendance_date'], ['attendance_type']);
解决方案
upsert 的工作原理完全一样
on duplicate key update on MySQL
它需要一个唯一的约束违规来更新而不是插入。
所以直接在数据库中检查你是否有这样的违规行为。
您还可以通过示例阅读更多信息,例如https://www.amitmerchant.com/insert-or-update-multiple-records-using-upsert-in-laravel8/