首页 > 解决方案 > Upsert 仅插入而不更新现有字段

问题描述

我正在尝试将出勤率添加到出勤表中,如果给定日期和学生 ID 的出勤率已经在表中,我需要更新出勤类型。

但是 upsert 只是插入,它永远不会更新。

SmStudentAttendance::upsert($studentRows, ['student_id', 'attendance_date'], ['attendance_type']);

标签: mysqldatabaselaraveleloquentquery-builder

解决方案


upsert 的工作原理完全一样

on duplicate key update on MySQL

它需要一个唯一的约束违规来更新而不是插入。

所以直接在数据库中检查你是否有这样的违规行为。

您还可以通过示例阅读更多信息,例如https://www.amitmerchant.com/insert-or-update-multiple-records-using-upsert-in-laravel8/


推荐阅读