我正在尝试将出勤人数添加到出勤表中,如果给定日期和学生id的出勤人数已经在表中,我需要更新出勤类型。
但是upsert只是插入而不更新。
SmStudentAttendance::upsert($studentRows, ['student_id', 'attendance_date'], ['attendance_type']);
这太迟了,但它对我有效。在迁移中试试:
$table->unique(['student_id', 'attendance_date']);
或者您可以在phpmyadmin(或类似的工具)中为列添加唯一的约束
upsert和
on duplicate key update on MySQL
需要惟一的约束冲突来更新,而不是插入。
所以检查你是否有这样的违规,直接在数据库中。
你也可以阅读更多的例子例如在https://www.amitmerchant.com/insert-or-update-multiple-records-using-upsert-in-laravel8/