當時間戳記變化時,如何按天將 Laravel Eloquent 結果分組?

DDD
發布: 2024-10-27 07:46:02
原創
415 人瀏覽過

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

按天對Laravel Eloquent 結果進行分組

在Laravel 中,查詢資料庫時,您可能會遇到需要按天而不是時間戳將結果分組的情況。以下是針對此特定場景的詳細問題和解答:

問題:

我有一個名為page_views 的表,其中存儲頁面訪問記錄以及時間戳、用戶IP 地址和頁面ID 。儘管使用了 groupBy 方法,但由於時間戳記內的秒數差異,查詢無法正確地按天對資料進行分組。

我希望根據每天的視圖獲取結果,這應該類似於:

  date          views
  ====          =====
10-11-2013       15
10-12 2013       45
  ...            ...
登入後複製

任何人都可以提供見解或解決方案嗎?

答案:

為了有效地按天對結果進行分組,答案建議利用MySQL 的DATE() 函數,該函數從DateTime 中提取日期部分value:

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"')
                            ));
登入後複製

此查詢利用初始where 子句中的Carbon 日期進行比較,並在get 方法中應用適當的DB 原始表達式來檢索日期和觀看次數。

以上是當時間戳記變化時,如何按天將 Laravel Eloquent 結果分組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!