0

脱毛タイム。

Laravel Socialite のコールバックを実装しました。User::whereTwitter ユーザー ID に対して実行されていますが、データベースに一致するレコードがあるにもかかわらず、常に null を返しています。

したがって、常に新しいユーザーを作成しようとするため、次のようなエラーが発生します。

QueryException in Connection.php line 673: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry...

これがコールバック関数です。$twitterUserSocialite からの着信ユーザー レコードです。\App\User\関数で明示的に使用しようとしましたが、役に立ちませんでした。

private function findOrCreateUser( $twitterUser )
{
  $user = User::where( 'twitter_id', $twitterUser->id )->first();

  if ($user)
  {
    return $user;
  }

  return User::create([
    'name'        => $twitterUser->name,
    'handle'      => $twitterUser->nickname,
    'twitter_id'  => $twitterUser->id,
    'avatar'      => $twitterUser->avatar_original
  ]);
}

アプリの別の場所でコードを実行すると、ユーザーは問題なく表示されます。php artisan tinker続いて試してみると\App\User::where('twitter_id', 123456789)->first()、次の結果が得られます。

=> App\User {#663
 id: 3,
 name: "Steve Jones",
 handle: "SteveJonesGtr",
 twitter_id: 123456789,
 avatar: "http://pbs.twimg.com/profile_images/whatever/bC0RLl-3.jpeg",
 created_at: "2016-04-20 11:41:39",
 updated_at: "2016-04-20 11:41:39",

}

編集:where句をこれに変更すると、機能します:

$user = User::where( 'handle', $twitterUser->nickname )->first();

しかし、これで結果が返されない理由がわかりません:

$user = User::where( 'twitter_id', $twitterUser->id )->first();

何か案は?

4

1 に答える 1