【问题标题】:laravel update record when it's not empty?laravel 不为空时更新记录?
【发布时间】:2017-08-10 21:52:32
【问题描述】:

我有这样的代码:

public function createOrGetUser(Provider $provider)
{
    $providerUser = $provider->user();
    $providerName = class_basename($provider);
    $token = $providerUser->token;
    $account = SocialAccount::whereProvider($providerName)
        ->whereProviderUserId($providerUser->getId())
        ->first();
    if ($account) {
        return $account->user;
    }else{
        $account = new SocialAccount([
            'provider_user_id' => $providerUser->getId(),
            'provider' => $providerName
        ]);
        $user = User::whereEmail($providerUser->getEmail())->first();
        if($user->first()) {
        if($providerName == "FacebookProvider") {
            $user->facebook_token = $token;
        }elseif($providerName == "TwitterProvider") {
            $user->twitter_token = $token;
        }else{
            $user->google_token = $token;
            }
        $user->save();
        }
        if (!$user) {
            $user = User::create([
                'email' => $providerUser->getEmail(),
                'name' => $providerUser->getName(),
                'avatar' => $providerUser->getAvatar(),
            ]);
        }
        $account->user()->associate($user);
        $account->save();
        return $user;
    }
}

唯一的问题是它永远不会检查 $providerName == "facebookprovider" 等并更新该用户的令牌。发生这种情况有什么特别的原因吗?

【问题讨论】:

  • 使用$user = User::whereEmail($providerUser->getEmail())->first();,您已经获得了一个对象。为什么,在下一行,你重复使用first()
  • 为什么用这个if($user->first())最好用if(!empty($user))
  • 我试过 if(!empty($user)) 没用
  • 尝试在 if 语句之前转储您的 $user

标签: laravel laravel-5 laravel-socialite


【解决方案1】:

发现于documentation

如果您只需要从数据库表中检索一行,您 可以使用第一种方法。此方法将返回单个 StdClass 对象

当你第一次调用first() 时,你会得到stdClass 对象。第二个可能永远不会是真的,因为这个类没有这个方法。

如果您将if ($user->first()) 更改为if ($user),它可能会起作用。

【讨论】:

    猜你喜欢
    • 2020-05-30
    • 2023-03-28
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2019-03-04
    • 1970-01-01
    相关资源
    最近更新 更多