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

السؤال

نشر

لدي جدول للمنتجات (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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...