今天寫專案的時候發現了個小問題,當資料庫主鍵無ID的時候,Eloquent ORM無法更新資料….
去查閱了資料,也沒找到現成的解決方法,然後就自己分析解決一下
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 協議》,轉載必須註明作者和本文連結