2016-05-16 33 views
2

これが本当に私の問題を引き起こしているのかどうかは分かりませんが、おそらく誰かが知っていると思います。私はLaravel名士を使用して行く時:

引数1が渡された:私はこのようなエラーが出るいくつかのクレイジーな理由

if ($authUser = User::where('provider_id', $social_user->id)) 
     return $authUser; 

$social_user = Socialite::driver($provider)->user(); 

を次にどこかに私のコードでこれを行うですIlluminate \ Database \ Eloquent \ BuilderのインスタンスIlluminate \ Contracts \ Auth \ Authenticatableを実装する必要があります。

ただし、 Oこれは、私はエラーを取得しない:

if($authUser = User::where('email', $social_user->email)->first()) 
     return $authUser; 

このように、このユーザーをIにログインします。

Auth::login($authUser, true); 

誰もがなぜ知っていますか?私はlaravelを使用しています。5.2

答えて

1

エラーメッセージは実際には自己説明されています。 User::where('provider_id', $social_user->id)を実行すると、ビルダーオブジェクトとなり、Illuminate\Database\Eloquent\Builderが実装されます。あなたは結果のコレクションを取得し、それに->get()を呼び出すことができます(あなたのケースでIlluminate\Contracts\Auth\Authenticatableを実装するオブジェクトのコレクションを、あなたはそれらを反復処理することができます)、またはあなたが行ったように、あなたは(->first()最初に一致を得ることができますIlluminate\Contracts\Auth\Authenticatableを実装する1つのオブジェクト)。 Eloquent documentationで詳しく読むことができます。

主なポイントは、あなたが->get()を呼び出すか、まで->first()あなたはビルダーオブジェクトで作業しているということです。実際にはpkでレコードを取得するために使用される->find()メソッドもありますが、これを使用して制約(where)でレコードを検索することはできませんが、モデルオブジェクトも返します。

+0

ありがとうございます。 :)それはそれを解決しました。 – Magearlik

関連する問題