2016-12-13 3 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 
]); 

У меня есть две модели User и Token с «один к одному» отношения.

В первой строке я пытаюсь поймать пользователя в базе данных, а затем обновляю модель с помощью метода 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 
    ]); 
Смежные вопросы