اذهب إلى المحتوى

السؤال

نشر (معدل)

لدي في قاعدة البيانات الجداول التالية:

hackathons
    id
    name
    ...

hackathon_user
    hackathon_id
    user_id

users
    id
    name

و لدي العلاقة التالية في النموذج Hackathon :

public function participants()
{
  return $this->belongsToMany(User::class);
}

أريد جلب سجلات الجدول hackathons مرتبة وفق عدد المشاركين كيف يُمكن ذلك؟

 

تم التعديل في بواسطة كمال محمودي

Recommended Posts

  • 0
نشر

بإمكانك إستخدام التابع withCount لتحقيق ذلك:

Hackathon::withCount('participants')
	->orderBy('participants_count', 'desc')
	->paginate(10); // or ->take(10) إذا كنت تريد جلب العشر الأوائل في الترتيب

كما يُمكنك إستخدام join أيضاً كما هو موضح أدناه:

$hackathons = Hackathon::leftJoin('hackathon_user','hackathons.id','=','hackathon_user.hackathon_id')
           ->selectRaw('hackathons.*, count(hackathon_user.hackathon_id) AS `participants_count`')
           ->groupBy('hackathons.id')
           ->orderBy('participants_count','DESC')
           ->paginate(10);
 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...