如何通过链表达式更新相关表模型中的记录?
这是我目前正在做的(并且可行)
$user = User::find(1);
$token = Token::where('user_id', $user->id)->first();
$token->token = $request->token;
$token->save();
但是我可以用更优雅的方式进行上述操作吗?
$user = User::find(1);
$user->token()->token = $new_token;
$user->token()->save();
我的用户模型
public function token()
{
return $this->hasOne('App\Token');
}
答案 0 :(得分:2)
一行:
null
在使用它之前只需了解以下内容:
但是,在您的特定情况下,我认为它是有效的,特别是如果您知道用户ID始终有效的话。
答案 1 :(得分:1)
您可以这样做:
User::find(1)->token()->update(['token' => $new_token]);
或者在您的课程App\Token
中像这样:
User::find(1)->token()->update_token($new_token);
并在update_token
类中创建App\Token
函数:
public function update_token(string $new_token)
{
$this->update(['token'=>$new_token]);
}
答案 2 :(得分:0)
$user = User::with('token')->findOrFail(1);
$user->token->update(['token' => $request->token]);