Rumah > pangkalan data > tutorial mysql > Bagaimanakah cara saya mengumpulkan hasil Laravel Eloquent mengikut hari apabila cap masa berbeza-beza?

Bagaimanakah cara saya mengumpulkan hasil Laravel Eloquent mengikut hari apabila cap masa berbeza-beza?

DDD
Lepaskan: 2024-10-27 07:46:02
asal
520 orang telah melayarinya

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

Mengumpulkan Hasil Laravel Fasih Mengikut Hari

Dalam Laravel, apabila membuat pertanyaan pangkalan data, anda mungkin menghadapi keperluan untuk mengumpulkan hasil mengikut hari dan bukannya cap waktu. Berikut ialah soalan dan jawapan terperinci untuk menangani senario khusus ini:

Soalan:

Saya mempunyai jadual bernama page_views, yang menyimpan rekod lawatan halaman berserta cap masa, alamat IP pengguna dan ID halaman . Walaupun menggunakan kaedah groupBy, pertanyaan tidak mengumpulkan data mengikut hari dengan betul disebabkan perbezaan dalam saat dalam cap masa.

Saya ingin mendapatkan hasil berdasarkan paparan setiap hari, yang sepatutnya menyerupai:

  date          views
  ====          =====
10-11-2013       15
10-12 2013       45
  ...            ...
Salin selepas log masuk

Bolehkah sesiapa memberikan pandangan atau penyelesaian?

Jawapan:

Untuk mengumpulkan hasil secara berkesan mengikut hari, jawapan mencadangkan memanfaatkan fungsi DATE() MySQL, yang mengekstrak bahagian tarikh daripada DateTime value:

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

Walau bagaimanapun, pendekatan pertanyaan mentah ini menyimpang daripada sintaks pembina pertanyaan Eloquent. Untuk penyelesaian yang lebih berorientasikan Fasih, jawapannya membentangkan perkara berikut:

$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"')
                            ));
Salin selepas log masuk

Pertanyaan ini menggunakan tarikh Karbon pada permulaan klausa untuk perbandingan dan menggunakan ungkapan mentah DB yang sesuai dalam kaedah get untuk mendapatkan kedua-dua tarikh dan kiraan tontonan.

Atas ialah kandungan terperinci Bagaimanakah cara saya mengumpulkan hasil Laravel Eloquent mengikut hari apabila cap masa berbeza-beza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan