2016-08-04 10 views
1

私はLaravel 5.2を使用しており、過去30日間に他のユーザーを参照した上位5人のユーザーのテーブルを作成するためのクエリを作成しようとしています。関連ユーザーの同じテーブルのLaravelクエリ

現在、ユーザーテーブルには参照先のユーザーのIDを含む「紹介」列があります。私はあなたにアイデアを与えるために、私の現在の質問を以下に含めます。しかし、基本的には、紹介回数が最も多い5人のユーザーのリストを返信したいと思います。リーダーボードのテーブルを作成することができます。ここで

は、私がこれまで持っているものです:

$top5_referrers = User::join('users_roles_link', 'users_roles_link.user_id', '=', 'user.id') 
           ->where('users_roles_link.role_id',12) 
           ->whereDate('user.created_at', '>=', Carbon::today()->subDay(30)->toDateString()) 
           ->select(
            DB::raw(' 
             user.id, user.username 
             (SELECT COUNT(u.id) FROM user u WHERE u.referral = user.id AND u.referral IS NOT NULL AND u.created_at >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)) AS total_signups 
            ')) 
           ->groupBy('user.id') 
           ->orderBy('total_signups', 'desc') 
           ->take(5) 
           ->get(); 

今、私は私が唯一、すでに思ってそれらのためのmodのある12のROLE_ID(を持つユーザーの場所を持つことによって、間違ったつもりだ知っています私はこのリファラリストのリストに興味があります)、私は実際に私が唯一の改造者のリストを戻す必要があるときに、これらの改造に結果を限定しています。

このシステムには14,000人以上のユーザーがいますので、可能な限りdbサーバーでこれを行う必要があります。誰も助言を提供することはできますか?私は本当にそれを感謝します。ありがとう。

答えて

0

これで誰もがこれを見つけることができます。

私は質問を考えていました。私はちょうど最初の場所で役割 '12'を持つすべてのユーザーをつかむ必要がありました。そこでは、新しいスターターだけでなく、ロール12を持つすべてのユーザーが必要なのでwhereDateを削除します。

次に、DB :: rawでは、参照されている現在のユーザーに一致する参照を持つユーザーを選択できました。

愚かな私。

関連する問題