当数据库表无主键ID时,ORM这样更新数据

今天写项目的时候发现了个小问题,当数据库主键无ID的时候,Eloquent ORM因为找不到ID无法更新数据

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: update `cou***_de***` set `is_s**d` = 1, `bi**_id` = ***, `bind_time` = 2021-01-11 17:28:23 where `id` is null

得到的是上面这个找不到列‘id’这个错误。当然 是因为数据库没有主键ID
laravel在封装model层时,源码中定义$primaryKey默认是等于id的,
只需要简单的在更新数据那个地方把 primaryKey 重新定义字段就可以解决

model层定义

protected $primaryKey = '';
看你们具体需求是要根据哪个字段去更新 然后把primaryKey定义为哪个。 我这里的是code
public function upd() {
    $this->primaryKey = 'code';
    return $this->save();
}

然后大功告成。问题无大小,解决就很棒。记录点滴

本作品采用《CC 协议》,转载必须注明作者和本文链接
Reality
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!