اسماعيل صدوقي نشر 27 ديسمبر 2021 أرسل تقرير نشر 27 ديسمبر 2021 (معدل) مرحبا, استخدم 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 } هل يوجد طريقة افضل للقيام بذلك؟ او كيف يمكنني الاكمال من هنا؟ شكرا لكم. تم التعديل في 27 ديسمبر 2021 بواسطة اسماعيل صدوقي 1 اقتباس
1 Wael Aljamal نشر 27 ديسمبر 2021 أرسل تقرير نشر 27 ديسمبر 2021 يمكننا بناء دالة تجلب عدد المنتجات المباع ضمن مجال من الوقت، طبعا يمكنك استدعاء الدالة عدة مرات، وفي كل مرة تمرر لها مجال مختلف 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(); 2 اقتباس
السؤال
اسماعيل صدوقي
مرحبا, استخدم 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 }
هل يوجد طريقة افضل للقيام بذلك؟ او كيف يمكنني الاكمال من هنا؟
شكرا لكم.
تم التعديل في بواسطة اسماعيل صدوقي1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.