bu kadar laravel bilgim ile bunu beceremeyeceğim anlasılan
Basit bir kod atacagim, tablo ismi users, ad soyad kolon isimleri => first_name, last_name oldugunu varsayin, siz tablo adinizi ve alanlari kendi tablonuza gore duzenleyin, yorum satirlarinda belirtecegim zaten.
takildiginiz bir sey olursa cekinmeden sorabilirsiniz.
$users = AppUser::all(); // tum userlari aldik
// userlari atayacigimiz dizi, eslestirme yaparken her seferinde sorgu atmayalim, bu diziden cekelim.
$userMap = [];
// en fazla referansa sahip olan userlari bu dizide toplayacagiz, dizide 3 alan olacak. 1 => first_name, 2 => last_name, 3 => references_count (totalde referans sayisi)
$highestReferences = [];
// sistemdeki userlari donup, $userMap tablomuza ekliyoruz
foreach($users as &$u) {
$userMap[$u->id] = $u;
}
/* kullanici tablosundan en cok referansa sahip kayitlari sorgular, donen sonuctaki under_reference degeri ilede referans sahibi kullaniciyi bulacagiz.
* HAVING under_reference IS NOT NULL sorgusu referanssiz kayit olanlari dahil etmemek icin, eger siz null yerine 0 ile dolduruyorsanız referanssiz kayit olanlari sorguyu soyle degistirin (asagida)
* HAVING under_reference > 0
**/
$results = DB::select('SELECT *, COUNT(*) as total FROM users GROUP BY under_reference HAVING under_reference IS NOT NULL order by total DESC LIMIT 5');
// yukardaki sorgudan donen kayitlari donelim ve referansa sahip user ile eslestirelim.
foreach($results as $result) {
$user = isset($userMap[$result->under_reference]) ? $userMap[$result->under_reference] : false;
// eger referans sahibi user , kayitlarimizda yoksa es gecelim.
if (!$user) continue;
/* referansın sahibini asagidaki diziye ekleyelim
* (first_name, last_name alanlari users tablosundan gelecek [sizde farkliysa kendinize gore duzenleyin kodu], $result->total ise yukardaki sorguda count unu aldigimiz referans toplami olacak)
**/
$highestReferences[] = [
'first_name' => $user->first_name,
'last_name' => $user->last_name,
'references_count' => $result->total
];
}
// burda ise olusturdugumuz veriyi dumpluyoruz, dogru sonucu gormus olmamiz gerek.
// siz listelemek icin asagidaki diziyi viewa gonderip, foreach icinde listeletebilirsiniz.
dd($highestReferences);