Laravel Eloquent group by count return wrong value

更新於 2021/12/29閱讀時間約 1 分鐘
最近發現在laravel中$query->count()回傳的數量居然是錯的,原來是因為如果有下groupBy之後再去count就會得到錯的值,可以發現明顯與count($query->get()) return的數字不一致 (明明總共有100筆,卻回傳只有2筆)。
在需要分頁的情況下,我們不太可能先get()拿到一大包資料再去count()總筆數,雖然total總數會是對的,但這樣會有效能問題。分頁就是為了解決效能問題,所以才要分頁,只需抓出該頁的資料就好。
解決方法如下:
$total = $query->getQuery()->getCountForPagination();
$data = $query->skip($start)->take($length)->get();
->getQuery()->getCountForPagination() 就可以拿到正確的筆數了,後面再去抓那頁的資料。
當然也可以這樣做:
$total = count($query->get());
算出來的total count會是正確的沒錯,但是因為沒分頁去抓所有資料,如果資料量很大會算很久。
為什麼會看到廣告
avatar-img
21會員
161內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
本筆記參考: 1. https://www.w3schools.com/sql/func_mysql_date_format.asp
解決方法其實就是載入中文字型: 1. 到jsPDF的repo可以看到有fontconverter資料夾,裡面有fontconverter.html,選擇ttf字型檔,這邊以微軟正黑體為例: 2. 上一步會生成msjh-normal.js,在程式中要import(這邊是React),接著設定這個字型
假設有一包資料如下: 想把某個欄位拿掉,可以用forget: $data = $data->map(function($item) {   return collect($item)->forget('show_order'); }); 本筆記參考: 1. https://stackoverf
在Laravel collection sortBy之後發現原本的array格式在資料回傳後居然變成json格式,以下依序描述問題與解法: 有一包data如下: $data = collect($data); 現在sortBy show_order欄位後,結果如下: $data = collect
假設有個collection data如下圖上方資料,使用->collapse()後結果即為下圖下方資料,等於是把array的values整理成一包array (combine multiple arrays into one): 本筆記參考: 1. https://stackoverflow.
source code: E 提供兩個範例,其實before, after就如同字面上的意思,會在前後加上內容。 範例1簡單的在前後加上文字,如下所示,需特別注意,是在div內的範例1前後加上文字。 before/after除了可以加上文字以外,還可以作為裝飾效果。如範例2,利用position調
本筆記參考: 1. https://www.w3schools.com/sql/func_mysql_date_format.asp
解決方法其實就是載入中文字型: 1. 到jsPDF的repo可以看到有fontconverter資料夾,裡面有fontconverter.html,選擇ttf字型檔,這邊以微軟正黑體為例: 2. 上一步會生成msjh-normal.js,在程式中要import(這邊是React),接著設定這個字型
假設有一包資料如下: 想把某個欄位拿掉,可以用forget: $data = $data->map(function($item) {   return collect($item)->forget('show_order'); }); 本筆記參考: 1. https://stackoverf
在Laravel collection sortBy之後發現原本的array格式在資料回傳後居然變成json格式,以下依序描述問題與解法: 有一包data如下: $data = collect($data); 現在sortBy show_order欄位後,結果如下: $data = collect
假設有個collection data如下圖上方資料,使用->collapse()後結果即為下圖下方資料,等於是把array的values整理成一包array (combine multiple arrays into one): 本筆記參考: 1. https://stackoverflow.
source code: E 提供兩個範例,其實before, after就如同字面上的意思,會在前後加上內容。 範例1簡單的在前後加上文字,如下所示,需特別注意,是在div內的範例1前後加上文字。 before/after除了可以加上文字以外,還可以作為裝飾效果。如範例2,利用position調
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Simple Storage Service (S3) 是 AWS 最常應用到的服務,只要是需要將檔案上傳到雲端的狀況都可以使用S3,本篇文章將介紹如何設定與使用AWS S3。
Thumbnail
在使用laravel中的Queue job的時候 如果希望job中斷還可以重新啟動這個時候就會需要用到Supervisor了 本篇文章為您帶來如何使用Supervisor執行Laravel的queue:work的教學
Thumbnail
有的時候,會希望在物件導向中對原生的Class新增功能的時候,大多我們都會寫一個新的class並繼承。 但是其實Laravel提供了一個不同的方式,讓我們可以在常用的Class上,直接新增想要的function,那就是macro。
Migration在 Laravel 中是一種用來管理資料庫結構變更的機制。它的主要目的是使開發者能夠在應用程序的不同環境中保持資料庫結構的一致性,並輕鬆地進行結構變更
Thumbnail
待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Simple Storage Service (S3) 是 AWS 最常應用到的服務,只要是需要將檔案上傳到雲端的狀況都可以使用S3,本篇文章將介紹如何設定與使用AWS S3。
Thumbnail
在使用laravel中的Queue job的時候 如果希望job中斷還可以重新啟動這個時候就會需要用到Supervisor了 本篇文章為您帶來如何使用Supervisor執行Laravel的queue:work的教學
Thumbnail
有的時候,會希望在物件導向中對原生的Class新增功能的時候,大多我們都會寫一個新的class並繼承。 但是其實Laravel提供了一個不同的方式,讓我們可以在常用的Class上,直接新增想要的function,那就是macro。
Migration在 Laravel 中是一種用來管理資料庫結構變更的機制。它的主要目的是使開發者能夠在應用程序的不同環境中保持資料庫結構的一致性,並輕鬆地進行結構變更
Thumbnail
待業中後,發現時間變很多就開始東看看西看看,思考著要如何更深入理解Laravel框架的運用,而在Laravel框架中哪些部分是框架替我們做了哪些處理,推薦一個影片給大家一起學習理解。