Asked Apr 15th, 2020 4:50 a.m. 2337 0 3
  • 2337 0 3
0

laravel ->count() vs ->get()->count()

Share
  • 2337 0 3

Các bác giải thích giúp e khác nhau của 2 thằng trên với ạ, (laravel ->count() vs ->get()->count()). e có 1 câu query mà kết quả của nó đang khác nhau ạ:(

Avatar Phạm Anh Tuấn @PhamAnh-Tuan
May 13th, 2021 3:57 p.m.

rồi get xong hiển thị ra view kiểu gì thế các bác

0
| Reply
Share

3 ANSWERS


Answered Apr 15th, 2020 4:52 a.m.
+3

laravel ->count() là một sql query

->get()->count() là đếm số phần tử trong mảng

Share
Answered Apr 15th, 2020 4:57 a.m.
+2

laravel ->count() sẽ đếm các record trong DB bằng query select count(*) as aggregate ...

->get()->count() sẽ đếm cái item trong collection của Laravel.

Share
Avatar kaka @chauchauonline
Apr 15th, 2020 4:58 a.m.

Như thế e nghĩ kết quả nó sẽ giống nhau chứ ạ?

0
| Reply
Share
Apr 15th, 2020 5:01 a.m.

@chauchauonline không bạn ơi :v nếu dùng sql count thì sẽ đếm số bản ghi phù hợp điều kiện rồi trả ra cho bạn kết quả là một con số,

còn get()->count() là bạn sẽ lấy ra các bản ghi theo điều kiện rồi đếm số bản ghi được lấy ra sau.

Còn nếu kết quả khác nhau tức là điều kiện đếm của bạn đang có vấn đề

0
| Reply
Share
Avatar kaka @chauchauonline
Apr 15th, 2020 7:14 a.m.

@hongquanfit e mới thử: model::where(dk)->groupBy(dk); mà ->count() với ->get()->count(); nó trả về 2 kết quả khác nhau:(

0
| Reply
Share
Answered Apr 15th, 2020 4:55 a.m.
+1
  • laravel ->count() là bạn dùng query để count()
  • còn ->get()->count() thì là bạn lấy ra dữ liệu (dữ liệu dạng này là collection) sau đó bạn dùng hàm count() của collection để count() https://laravel.com/docs/5.8/collections#method-count
Share
Viblo
Let's register a Viblo Account to get more interesting posts.