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

أكثر 5 منتجات مبيعا باستخدام Laravel

Mahmoud Alrashidi

السؤال

لدي جدول للمنتجات (products) هذا الجدول لديه مودل خاص به إسمه Product، و جدول آخر للمُشتريات  purchases و المودل الخاص به هو Purchase لكل منتج عدة مشتريات العلاقة واحد لكثير و إسم الحقل الذي يتم الربط من خلاله هو product_id،

أريد أكثر 5 منتجات مبيعاً في آخر شهر او آخر 7 أيام و غيرها، كيف يُمكنني ذلك؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

بإمكانك إستعمال هذه الطريقة لجلب أكثر منتجات إشتراءاً في آخر شهر:

<?php

$most_purchased_last_month = Product::join("purchases", "purchases.product_id", "=", "products.id")
  ->where("purchases.created_at", ">=", date("Y-m-d H:i:s", strtotime('-1 month', time()))) // لجلب مشتريات هذا آخر شهر فقط
  ->groupBy("products.id") // التجميع على أساس معرف المنتج
  ->orderBy(DB::raw('COUNT(products.id)'), 'desc') // الترتيب على أساس عدد المشتريات لكل منتج
  ->take(5) // نأخذ 5 منتجات فقط كحد أعظمي
  ->get(array(DB::raw('COUNT(products.id) as purchases_count'), 'products.*')); // جلب كافة بيانات المنتج بالإضافة إلى عدد المشتريات لكل منتج

بنفس الطريقة يُمكن التلاعب في التابع where لجلب الأكثر شراءً في آخر 7 أيام:

<?php

$most_purchased_last_week = Product::join("purchases", "purchases.product_id", "=", "products.id")
            ->where("purchases.created_at", ">=", date("Y-m-d H:i:s", strtotime('-7 days', time()))) // لجلب مشتريات هذا آخر 7 أيام فقط 
            ->groupBy("products.id") // التجميع على أساس معرف المنتج
            ->orderBy(DB::raw('COUNT(products.id)'), 'desc') // الترتيب على أساس عدد المشتريات لكل منتج
            ->take(5) // نأخذ 5 منتجات فقط كحد أعظمي
            ->get(array(DB::raw('COUNT(products.id) as purchases_count'), 'products.*')); // جلب كافة بيانات المنتج بالإضافة إلى عدد المشتريات

أما بخصوص آخر سنة أيضاً تقوم بتغيير where بهذا الشكل:

<?php

->where("purchases.created_at", ">=", date("Y-m-d H:i:s", strtotime('-1 year', time())))

أما إن أزلت سطر التابع where كلياً فسيتم جلب أكثر 5 منتجات شراءً منذ البداية.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...