当数据库表无主键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 协议》,转载必须注明作者和本文链接