私はこれが私に私のデータベースからすべてユーザーのリストを与えているLaravelの認証ユーザー
$user = Auth:user()->get();
dd($user);
をやっています。 なぜですか?
私はこれが私に私のデータベースからすべてユーザーのリストを与えているLaravelの認証ユーザー
$user = Auth:user()->get();
dd($user);
をやっています。 なぜですか?
戻りコレクション
はただ、この場合には
$user = Auth:user();
dd($user);
単一のユーザー・データを取得するためにのget()メソッドの戻り値のユーザーコレクションオブジェクト
を のget()を削除しますので次の方法でユーザーデータを認証できます。
$user = Auth::user(); instead of using get();
Your user id is: {{ $user->id }}
Your first name is: {{ $user->first_name }}
Your last name is: {{ $user->last_name }}
あなたの質問は答えを解決しますが、これがなぜそうであるかについての説明もしていませんが(質問で特に質問された) – milo526
その他の回答は、問題の解決方法を説明していますが、これがどうして起こるのかを正しく説明できません。
laravelドキュメント状態(source):
get
方法は、各結果はPHPStdClass
オブジェクトのインスタンスである結果を含むIlluminate\Support\Collection
を返します。
完全なドキュメントはhereで、APIリファレンスはhereです。
ここではget
関数はコレクションを返しますが、User
オブジェクトは返しません。 QueryBuilder
のgetメソッドは、select文を実行します。
次のスニペットでは、実行されるクエリを確認できます。
DB::enableQueryLog();
Auth::user()->get();
dump(DB::getQueryLog());
DB::enableQueryLog();
Auth::user()->where('id', 1)->get();
dump(DB::getQueryLog());
最初のクエリが実際に出力予期されたユーザを、2番目のクエリはAuth::user()
からユーザクラスをつかむであろうし、その表からすべての行を選択します。
3番目と4番目のクエリを実行すると、最初に予想されるユーザーを取得することがわかりますが、4番目のクエリはユーザー(この場合はID 1のユーザー)も取得します。これはあまりにもwhere
であり、Auth::user()
ではありません。
これらの結果から、getにはすべてのクエリビルダー関数は考慮されますが、指定されたクラスのパラメータは考慮されないと結論づけられます。 オブジェクトを取得する場合、そのオブジェクトのクラスだけが考慮されます。
としてあまりにも他の質問どこ正しいあなたの問題を解決し、あなたが使用することができます。
$user = Auth::user();
をユーザーをフェッチするには。
' - > get();' – Onix