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

السؤال

نشر (معدل)

مرحبا, استخدم  PHP/laravel

لدي جدول للطلبيات و ارغب في معرفة أكثر وقت تتم فيه الطلبات, مثلا اليوم يتم شراء العديد من المنتجات في فترة من 4 مساءا الى 6 مساءا

هذا ما قمت بالمحاولة فيه:

$collection = $this->totalOrders->get()->map(function ($query) {
            return $query->created_at->format('H:i:s');
        });
dd($collection);

بحيث تحصلت على كل تواريخ الطلبات هذا اليوم:

Illuminate\Support\Collection {#1979 ▼
  #items: array:6 [▼
    0 => "10:56:47"
    1 => "17:19:27"
    2 => "17:19:27"
    3 => "00:15:41"
    4 => "00:15:41"
    5 => "00:15:41"
  ]
  #escapeWhenCastingToString: false
}

هل يوجد طريقة افضل للقيام بذلك؟ او كيف يمكنني الاكمال من هنا؟

شكرا لكم.

تم التعديل في بواسطة اسماعيل صدوقي

Recommended Posts

  • 1
نشر

يمكننا بناء دالة تجلب عدد المنتجات المباع ضمن مجال من الوقت، طبعا يمكنك استدعاء الدالة عدة مرات، 

وفي كل مرة تمرر لها مجال مختلف

public function itemsInHour($builder, $from, $to)
{
    return $builder
        ->withCount(['transactions' => function ($transaction) use ($from, $to) {
            $transaction
                ->whereDate('created_at', '>', $from)
                ->whereDate('created_at', '<', $to);
        }])
       // ->orderBy('transactions_count', 'desc');
}

حيث أن:

  • builder: باني الاستعلام
  • transactions: جدول المناقلات أو المشتريات
  • from تاريخ بدء البحث
  • to تاريخ انتهاء البحث

كما يمكن كالتالي:

  • بمساعدة حزمة Carbon لجلب مشتريات آخر يوم
  • تجميع و ترتيب بتعليمات SQL
use Carbon\Carbon;

$productsByDay = transactions::where('created_at', '>=', Carbon::now()->subDays(1))
                                                                      ^^^^^^^^^^^^^^ يوم واحد
                ->groupBy('date')    // تجميع حسب التاريخ

                ->orderBy('date', 'DESC')
                ->get([
                DB::raw('DATE(created_at) as date'),
                DB::raw('COUNT(*) as "products"')
])->pluck('products','date')->toArray();

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...