Mahmoud Alrashidi نشر 7 مارس 2021 أرسل تقرير نشر 7 مارس 2021 لدي نموذج للطلبات Order حيث كل مُستخدم له عدة طلبات حسب العلاقة hasMany: <?php public function orders() { return $this->hasMany(Order::class); } أما النموذج Order: <?php public function user() { return $this->belongsTo(User::class); } حيث يربط النموذجين الحقل user_id و يوجد في جدول الطلبات الحقل amount لتخزين مبلغ الطلب. أريد معرفة كيف بإمكاني عمل فلترة للمُستخدمين حسب الأكثر طلباً أي من الأعلى طلب إلى الأقل طلب و الفلترة أيضاً حسب مجموع قيمة الطلبات. 1 اقتباس
1 سمير عبود نشر 7 مارس 2021 أرسل تقرير نشر 7 مارس 2021 يُمكنك إستخدام join لعمل الشيء الذي تُريده بهذا الشكل: لعمل فلترة للمُستخدمين حسب الأكثر طلباً: <?php User::join('orders', 'orders.user_id', '=', 'users.id') ->selectRaw('users.*, count(orders.id) as orders_count, sum(orders.amount) as total_amount') ->groupBy('users.id') ->orderBy('orders_count', 'desc') ->paginate(10); لعمل فلترة للمُستخدمين حسب مجموع قيمة الطلبات: <?php User::join('orders', 'orders.user_id', '=', 'users.id') ->selectRaw('users.*, count(orders.id) as orders_count, sum(orders.amount) as total_amount') ->groupBy('users.id') ->orderBy('total_amount', 'desc') ->paginate(10); أما إن كنت تريد عمل فلترة للمُستخدمين حسب مجموع قيمة الطلبات بالإضافة لتحديد مجال للمجموع يُمكنك ذلك من خلال التالي: <?php $min_amount = 30000; $max_amount = 40000; User::join('orders', 'orders.user_id', '=', 'users.id') ->selectRaw('users.*, count(orders.id) as orders_count, sum(orders.amount) as total_amount') ->groupBy('users.id') ->havingRaw('total_amount >= ? and total_amount <= ?', [$min_amount, $max_amount]) ->orderBy('total_amount', 'desc') ->paginate(10); بنفس الطريقة إن أردت تحديد مجال لعدد الطلبات يُمكنك ذلك أيضاً. 3 اقتباس
السؤال
Mahmoud Alrashidi
لدي نموذج للطلبات Order حيث كل مُستخدم له عدة طلبات حسب العلاقة hasMany:
أما النموذج Order:
حيث يربط النموذجين الحقل user_id و يوجد في جدول الطلبات الحقل amount لتخزين مبلغ الطلب. أريد معرفة كيف بإمكاني عمل فلترة للمُستخدمين حسب الأكثر طلباً أي من الأعلى طلب إلى الأقل طلب و الفلترة أيضاً حسب مجموع قيمة الطلبات.
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.