2017-01-04 23 views
1

新しいLaravel 5.3のインストールがあります。組み込みの認証機能を使用するには、php artisan make:auth を使用してください。すべて正常に動作し、ログイン後にAuth::check()がtrueを返した場合、Auth::user()はユーザーのデータを返し、Auth::id()はログインしたユーザーのIDを返します。私は次のクエリセッションからユーザーIDを取得する - laravel 5.3認証

を参照してくださいデバッガパネルの「クエリ」タブでは、私は私のコントローラのアクション(および他の場所で認証に関連付けられていない他のコード)にのみ、このライン

$userId = Auth:id(); 

を持っている場合ということである何私を悩ま

select * from `users` where `users`.`id` = '34' limit 1 

この追加のクエリは、クエリを作成したり、ユーザーテーブルから特定のフィールドを選択したり、別のテーブルに参加させるためにユーザーのIDが必要なため、私にとって特に好ましくありません。パフォーマンス上の理由から、私は二重クエリをしたくありません。

LaravelにログインしたユーザーのIDをセッションに保存する(保存していない場合)場合は、ログインしたユーザーのidをセッションから直接取得する方法がありますか?データベース。

EDIT:私は、データベースから一部のカラムだけを必要とするならば、なぜ、select *クエリを作る、しかし、それは無意味です、最初Auth::user()呼び出した後、後続の呼び出しは、データベースへの要求をしないだろうということを理解しています。少なくとも、Laravelにselect *の代わりに特定の列のみを選択するように指示する方法はありますか?

ありがとうございました

+2

は、アプリケーションにユーザーIDを取得するために回り道を与えるために。パフォーマンスとメモリ使用量はごくわずかしか得られませんが、最終的に非標準のLaravelアプリケーションを使用すると大きくなりません。フレームワークの背後にある全体のアイデアは、開発の容易さとマイクロ管理/マイクロ最適化です。このレベルのカスタマイズが必要な場合は、Laravelを使用しないことをお勧めします。 –

+1

@TomasButeler、アドバイスをいただきありがとうございますが、 'select * 'に反対することはマイクロ最適化ではないという意見に同意する必要があります。私は、フレームワークの開発の容易さは、このような単純なタスクのパフォーマンスを妨げてはならないと思うし、laravelのような一般的なフレームワークがこのオプションを持っていたはずであると思うIMHO – dav

+1

私は申し訳ありませんが、Tomas Buteler 。 Laravelはアプリケーションをすばやくスピンアップするように設計されていましたが、カスタマイズの際には癖があります。しかし、Laravelほど堅牢なフレームワークは、フレームワークをカスタマイズしたり、必要な方法で作業するのに十分なほどスマートになる能力を提供するのに十分なほど動的であると考えられています。 私が取り組んでいるプロジェクトは、サーバー側でLaravel 100%を使用しています。プロジェクトでは、laravelをある程度カスタマイズする必要があります。 Auth()Facadeはどこに電話していますか?またはauthへの参照をしていますか? –

答えて

-1

別のクエリを実行する必要はありません。他のプロパティを取得するには、このオブジェクトを使用します: `誤謬として私を打つ最適化されていない` *選択理由だけで

auth()->user()-name 
+0

答えに感謝しますが、うまくいきません。つまり、再び 'select *'クエリを行います。私は '選択する*'、すべての列を取得し、いくつかの純粋な最適化を使用したくないですか? – dav

+0

Laravelは常にログインしたユーザーに対して1つのクエリを実行します。オブジェクトを使用する場合、別のクエリは実行されません。ほとんどのリクエストでこの機能を無効にしたい場合は、独自または第三者の認証システムを使用する必要があります。しかし、LaravelはファイルやDBからセッションを読み込んでいるので意味がありません。 –

+0

問題は、ユーザーのfirst_name、last_name、emailだけが必要で、laravelが 'select *'を行うのはなぜですか、他の列が使用されない場合は 'select *'クエリを作成するのは無駄です – dav

関連する問題