亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Laravel 中創建一個返回按日期分組且不重復的數據的查詢

如何在 Laravel 中創建一個返回按日期分組且不重復的數據的查詢

PHP
猛跑小豬 2023-09-08 10:36:47
我的數據庫中有一個表scans,其中記錄了用戶的掃描活動,并且用戶一天可以進行多個活動。我正在尋找獲取特定用戶在幾天內所有掃描的總和的最佳方法。我已經在代碼中嘗試了以下操作,但我想我遺漏了一些東西,因為我想聚合當天進行的用戶的掃描。 DB::table('scans')->select(DB::raw('count(*) as total, scanner, created_at'))->where('scanner', 'Jon Snow')->groupBy('created_at')->get()=> Illuminate\Support\Collection {#3313     all: [       {#3304         +"total": 1,         +"scanner": "Jon Snow",         +"created_at": "2020-07-26 19:43:58",       },       {#3321         +"total": 1,         +"scanner": "Jon Snow",         +"created_at": "2020-07-26 19:32:40",       },       {#3327         +"total": 1,         +"scanner": "Jon Snow",         +"created_at": "2020-07-28 19:44:18",       },       {#3323         +"total": 1,         +"scanner": "Jon Snow",         +"created_at": "2020-07-28 20:30:30",       },所以代替這個:       {#3304         +"total": 1,         +"scanner": "Jon Snow",         +"created_at": "2020-07-26 19:32:58",       },       {#3321         +"total": 1,         +"scanner": "Jon Snow",         +"created_at": "2020-07-26 19:43:40",       },我想要這個:       {#3304         +"total": 2,         +"scanner": "Jon Snow",         +"created_at": "2020-07-26",       },       {#3304         +"total": 5,         +"scanner": "Jon Snow",         +"created_at": "2020-07-28",       },
查看完整描述

1 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

問題:

目前您正在執行groupBy(created_at)。由于幾乎所有掃描都有不同的日期時間,因此 groupBy 將無法按預期工作。


解決方案:

如果我理解正確的話,您需要按 create_at 的日期進行 groupBy 而不需要時間。為此,您必須僅選擇日期時間列的日期部分。有兩種方法可以做到這一點:

DB::raw('count(*) as total, DATE_FORMAT(created_at, "%Y-%m-%d") as someDate, scanner')
->where('scanner', 'Jon Snow')
->groupBy('someDate')
->get()

@編輯

你也可以這樣做DATE(created_at) as someDate


例子:

我的數據庫中插入了 4 個用戶:

  • 2 個已創建_at => '2020-05-05 10:10:10'

  • 2 個已創建_at => '2020-10-10 10:10:10'

結果:

Illuminate\Support\Collection {#1945

  #items: array:2 [

    0 => {#1952

      +"count": 2

      +"new_date": "2020-05-05"

    }

    1 => {#2092

      +"count": 2

      +"new_date": "2020-10-10"

    }

  ]

}


查看完整回答
反對 回復 2023-09-08
  • 1 回答
  • 0 關注
  • 117 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號