私は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サーバーでこれを行う必要があります。誰も助言を提供することはできますか?私は本当にそれを感謝します。ありがとう。