insertAll里面有个replace参数,操作之后发现,即使这个参数设置成true,最后的执行结果是直接把已经存在的数据删除后再插入的,相当于先delete再insert.这样导致一些不需要更新的字段也不存在了.
在网上找到一个 ON DUPLICATE KEY UPDATE 的用法 实验后是自己想要的效果.更新就是update
这里重复就更新是指的更新主键或者唯一索引重复的地方
直接上代码
$res = Db::execute('INSERT INTO `student`(`student_name`, `student_no`, `status`, `school_id`, `create_time`) VALUES'.$data.' ON DUPLICATE KEY UPDATE `student_name`= VALUES(student_name),`status`