[英]Laravel: UpdateOrCreate on Relation?
一個用戶有一輛汽車。
用戶
id | name
1 | Bob
2 | Alice
汽車
idMember | color | energy
1 | blue | 0.95
在用戶類里面我有
public function car()
{
return $this->hasOne('App\Car','idMember');
}
我想像這樣在關系模型上調用 updateOrCreate :
$user->car()->updateOrCreate(['idMember' => $user->id], ['color' => 'red', 'energy' => '0.1']);
但是,我收到錯誤消息
"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'id' in 'where clause' (SQL: update
cars
setcolor
= red,energy
= 0.1,updated_at
= 2018-01-12 15:26:47 whereid
is空)
他為什么要找
id
為空
?
需要明確的是,您的原始語法是正確的。 您可以在關系上使用它:
$user->car()->updateOrCreate(['idMember' => $user->id], [
'color' => 'red',
'energy' => '0.1',
]);
這將檢查是否有car
有idMember === $user->id
; 如果是這樣,更新color
和energy
。 如果沒有,它將創建一個帶有idMember
、 color
和energy
的car
記錄。
我沒有測試過,但是根據第一個參數的數組類型,你應該可以傳入多個匹配條件,比如
['idMember' => $user->id, 'day' => 'tuesday']
您的汽車模型應該有一個主鍵,通常稱為“id”。 創建它。
這就是我在不向汽車模型添加不必要的自動遞增 id 的情況下解決我的問題的方法:
class Car extends Model
{
protected $primaryKey = 'idMember';
public $incrementing = false;
在您的模型中,如果主鍵不是“ID”,請提及主鍵
protected $primaryKey = "Your Primary Key";
如果您的主鍵不需要 icnrementing
public $incrementing = false;
就是這樣..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.