Laravel 5.2를 사용하여 지난 30 일 동안 다른 사용자를 추천 한 상위 5 명의 사용자 테이블을 만드는 쿼리를 작성하려고합니다.관련 사용자의 동일한 테이블에 대한 Laravel 쿼리
현재 사용자 테이블에는 참조 된 사용자의 ID가 포함 된 'referral'열이 있습니다. 나는 당신에게 아이디어를주기 위해 아래에 나의 현재의 질문을 포함시킬 것이다. 하지만 기본적으로 가장 많이 추천 한 추천 사용자가 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();
지금 내가 이미 궁금 사람들을위한 모드의, 유일한 있습니다 (12)의 ROLE_ID을 가진 사용자 (에 어디함으로써 잘못된거야 알고 여기
는 내가 지금까지있어 무엇인가 이 목록의 리퍼러 목록에 관심이있는 사용자)! 나는 mods의 목록을 가져와야 할 때 결과를이 mods로 제한합니다.이 시스템에는 14,000 명이 넘는 사용자가 있으므로 가능한 한 db 서버에서이 작업을 수행해야합니다. 누구든지 조언을 해줄 수 있습니까? 나는 정말로 감사 할 것입니다. 감사.