2016-12-13 23 views
1

這裏是我的代碼:如何使用updateOrCreate proprely

$user = \App\User::where('id', $uid)->firstOrFail(); 

$user->token()->updateOrCreate(['user_id' => $uid, 'type' => $type], [ 
     'auth'  => $auth_token, 
     'refresh' => $refresh_token, 
     'type'  => $type 
]); 

我有兩個型號UserToken與「一對一」的關係。

在第一行中,我嘗試將用戶引入數據庫,然後使用updateOrCreate()方法更新我的模型。

但是,正如您可以閱讀它,我必須先使用選擇器'user_id' => $uid才能成功更新我的模型。我認爲Eloquent應該能夠以不同的方式管理它,而不會提出兩個請求。

回答

0

您不必在該查詢中使用user_id => $ uid。它是基於這種關係注入的。您可以將其重寫爲:

$token = \App\User::where('id', $uid)->firstOrFail()->token()->updateOrCreate(['type' => $type], [ 
      'auth'  => $auth_token, 
      'refresh' => $refresh_token, 
      'type'  => $type 
    ]);