"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف أقوم بتجميع نتائج Laravel Eloquent حسب الأيام التي تختلف فيها الطوابع الزمنية؟

كيف أقوم بتجميع نتائج Laravel Eloquent حسب الأيام التي تختلف فيها الطوابع الزمنية؟

تم النشر بتاريخ 2024-11-20
تصفح:762

How do I group Laravel Eloquent results by days when timestamps vary?

تجميع نتائج Laravel Eloquent حسب الأيام

في Laravel، عند الاستعلام عن قاعدة بيانات، قد تواجه الحاجة إلى تجميع النتائج حسب الأيام بدلاً من الطوابع الزمنية. فيما يلي سؤال وإجابة تفصيلية لمعالجة هذا السيناريو المحدد:

السؤال:

لدي جدول يسمى page_views، والذي يخزن سجلات زيارات الصفحة إلى جانب الطوابع الزمنية وعناوين IP للمستخدم ومعرفات الصفحات . على الرغم من استخدام طريقة groupBy، لا تقوم الاستعلامات بتجميع البيانات بشكل صحيح حسب الأيام بسبب الاختلافات في الثواني ضمن الطوابع الزمنية.

أرغب في جلب النتائج بناءً على مرات المشاهدة يوميًا، والتي يجب أن تكون على النحو التالي:

  date          views
  ====          =====
10-11-2013       15
10-12 2013       45
  ...            ...

هل يمكن لأي شخص تقديم رؤى أو حلول؟

الإجابة:

لتجميع النتائج بشكل فعال حسب الأيام، تقترح الإجابة الاستفادة من وظيفة DATE() الخاصة بـ MySQL، الذي يستخرج جزء التاريخ من قيمة DateTime:

DB::table('page_views')
      ->select(DB::raw('DATE(created_at) as date'), DB::raw('count(*) as views'))
      ->groupBy('date')
      ->get();

ومع ذلك، فإن أسلوب الاستعلام الأولي هذا ينحرف عن بناء جملة منشئ الاستعلامات في Eloquent. للحصول على حل أكثر توجهاً نحو Eloquent، تقدم الإجابة ما يلي:

$visitorTraffic = PageView::where('created_at', '>=', \Carbon\Carbon::now->subMonth())
                            ->groupBy('date')
                            ->orderBy('date', 'DESC')
                            ->get(array(
                                DB::raw('Date(created_at) as date'),
                                DB::raw('COUNT(*) as "views"')
                            ));

يستخدم هذا الاستعلام التواريخ الكربونية في جملة حيث الأولية للمقارنة ويطبق التعبيرات الأولية لقاعدة البيانات المناسبة ضمن طريقة get لاسترداد كل من التاريخ وعدد مرات العرض.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3