新しい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 *
の代わりに特定の列のみを選択するように指示する方法はありますか?
ありがとうございました
は、アプリケーションにユーザーIDを取得するために回り道を与えるために。パフォーマンスとメモリ使用量はごくわずかしか得られませんが、最終的に非標準のLaravelアプリケーションを使用すると大きくなりません。フレームワークの背後にある全体のアイデアは、開発の容易さとマイクロ管理/マイクロ最適化です。このレベルのカスタマイズが必要な場合は、Laravelを使用しないことをお勧めします。 –
@TomasButeler、アドバイスをいただきありがとうございますが、 'select * 'に反対することはマイクロ最適化ではないという意見に同意する必要があります。私は、フレームワークの開発の容易さは、このような単純なタスクのパフォーマンスを妨げてはならないと思うし、laravelのような一般的なフレームワークがこのオプションを持っていたはずであると思うIMHO – dav
私は申し訳ありませんが、Tomas Buteler 。 Laravelはアプリケーションをすばやくスピンアップするように設計されていましたが、カスタマイズの際には癖があります。しかし、Laravelほど堅牢なフレームワークは、フレームワークをカスタマイズしたり、必要な方法で作業するのに十分なほどスマートになる能力を提供するのに十分なほど動的であると考えられています。 私が取り組んでいるプロジェクトは、サーバー側でLaravel 100%を使用しています。プロジェクトでは、laravelをある程度カスタマイズする必要があります。 Auth()Facadeはどこに電話していますか?またはauthへの参照をしていますか? –