當資料庫表無主鍵ID時,ORM這樣更新資料

忽而今夏發表於2021-01-12

今天寫專案的時候發現了個小問題,當資料庫主鍵無ID的時候,Eloquent ORM無法更新資料….
去查閱了資料,也沒找到現成的解決方法:joy:,然後就自己分析解決一下

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 Change Me

相關文章