簡體   English   中英

Laravel:更新或創建關系?

[英]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 set color = red, energy = 0.1, updated_at = 2018-01-12 15:26:47 where id is空)

他為什么要找

id為空

?

需要明確的是,您的原始語法是正確的。 您可以在關系上使用它:

$user->car()->updateOrCreate(['idMember' => $user->id], [
    'color' => 'red',
    'energy' => '0.1',
]);

這將檢查是否有caridMember === $user->id ; 如果是這樣,更新colorenergy 如果沒有,它將創建一個帶有idMembercolorenergycar記錄。

我沒有測試過,但是根據第一個參數的數組類型,你應該可以傳入多個匹配條件,比如

['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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM