私はユーザーがいて、xpを持っています。Laravel:Eloquent Form
User::orderBy('xp', 'desc')->get();
しかし、今私は1つのユーザーランクを取得したいと思います。だから私はxpで自分のユーザーリストを注文し、このリストの特定のユーザーの位置を取得したい。
これはforeachなしでも可能ですか?
おかげ
私はユーザーがいて、xpを持っています。Laravel:Eloquent Form
User::orderBy('xp', 'desc')->get();
しかし、今私は1つのユーザーランクを取得したいと思います。だから私はxpで自分のユーザーリストを注文し、このリストの特定のユーザーの位置を取得したい。
これはforeachなしでも可能ですか?
おかげ
私は、その実際には2つのクエリを考える:
$user = User::find($id)
$position = User::where('x', '>=', $user->xp)->count();
だから、最初はただusers
がこのuser
よりXP
多くを持っているどのように多くの参照するクエリを実行し、問題のユーザーを取得します。
ああ!かなり賢い !そんなことは考えなかった!ありがとう:) –
これは、すべてのユーザーのDBへの追加クエリを作成することに注意してください。 –
@AlexeyMezenin私は1人のユーザーのショーでそれを使用したいので、それはすべてのユーザーのためのクエリを作成しないでしょうか? –
コレクションを取得するので、あなたがこれを行うことができます:
$users = User::orderBy('xp', 'desc')->get();
$position = $users->where('name', 'John')->keys()->first() + 1; // Get position by name.
$position = $users->where('id', 5)->keys()->first() + 1; // Get position by user ID.
このソリューションでは、DBへの追加のクエリを作成しません。
'User :: orderBy( 'xp'、 'desc') - > get();'はテーブル内のすべてのユーザを取得して水分補給します。 –
@AlexHarrisすべてのOPのニーズが、リクエストごとに1人のユーザーの位置を表示している場合は、ソリューションを使用する必要があります。ロードされたユーザーのための位置を表示したい場合、このソリューションはより良いでしょう。彼は 'get()'クエリを表示してforeachを挙げていたので、たくさんのユーザのポジションを表示したいと思っていました。 –
ユーザーテーブルのテーブル構造を表示します。 –