Hướng dẫn dùng collection count trong PHP
Trong quá trình phát triển ứng dụng, tôi chắc chắn rằng bạn đã từng phải xử lý các tình huống tính toán phức tạp với một tập dữ liệu, ví dụ như tính toán tổng tiền thanh toán theo từng người đặt hàng, hay tính tổng số view các bài viết theo từng giờ trong ngày… Thực sự những bài toán liên quan nhiều đến các thuật toán như sắp xếp, tìm kiếm, tính toán… như vậy đã làm mất không biết bao nhiêu thời gian. Show
Nhận thấy việc cần tạo ra một thư viện các hàm phục vụ cho thao tác với tập dữ liệu, Laravel Collection là một lớp với cực nhiều các hàm được tạo sẵn và bạn yên tâm các bài toán trên sẽ không còn mất nhiều thời gian thực hiện nữa. 1. Laravel Collection là gì?Collection trong Laravel là một lớp trong lập trình hướng đối tượng, nó thay thế cho các mảng truyền thống. Giống như mảng, Collection có nhiều các item thành phần, tuy nhiên các item này có thể là các đối tượng thay cho các kiểu dữ liệu đơn giản như String, Integer… Collection có nhiều ưu điểm trong mảng truyền thống:
Laravel Collection là một mở rộng của PHP Collection với số lượng các helper method lớn Laravel Collection giúp làm việc với mảng dữ liệu rất hiệu quả. Illuminate\Support\Collection class trong Laravel được implement một số các interface PHP như:
2. Tạo ra Laravel Collection2.1 Sử dụng phương thức collect() hoặc tạo mới một thực thể từ classĐể tạo một Collection chúng ta sử dụng helper method collect hoặc tạo một instance của lớp Illuminate\Support\Collection:
Collection cung cấp rất nhiều các helper method có sẵn, chúng ta sẽ kiểm tra xem các phương thức này hoạt động như thế nào. Để thực hành nhanh chúng ta sẽ sử dụng Tinker console . Đầu tiên chúng ta chạy Tinker console bằng lệnh:
Sau đó chúng ta tạo một collection để thực hiện kiểm tra các phương thức của Collection:
Chúng ta đã tạo một newCollection. 2.2 Laravel Eloquent CollectionLaravel Eloquent ORM là phần thực hiện mapping database thành các Model trong lập trình và từ đó thực hiện các thao tác dữ liệu với database thông qua Model một cách đơn giản. Các truy vấn thông qua Eloquent Model sẽ trả về một Collection và bạn hoàn toàn có thể xử lý dữ liệu trả về này trên ứng dụng:
Ví dụ trên đây $hobbies sẽ trả về tổng số sở thích của tất cả các user đang hoạt động, ví dụ:
Kết quả trả về là 7. 3. Danh sách các phương thức Laravel CollectionCác phương thức trong Laravel Collection được chia thành các nhóm chức năng khác nhau, với cách phân chia theo nhóm bạn sẽ dễ dàng nắm bắt được ý nghĩa của từng phương thức. 3.1 Các phương thức tìm kiếm dữ liệuCác phương thức trong nhóm chức năng tìm kiếm dữ liệu giúp bạn tìm ra một dữ liệu trong tập dữ liệu, các phương thức bao gồm: contains(), where(), search(), has() và một loạt các phương thức mở rộng khác như containsStrict(), whereIn(), whereNotIn(), whereInStrict(), whereNotInStrict()… Các phương thức này thường trả về kết quả dạng boolean đúng hoặc sai. 3.2 Các phương thức lọc dữ liệuVới một tập dữ liệu cho trước chúng ta muốn lọc lấy các dữ liệu cần thiết có thể sử dụng filter(), all() 3.3 Các phương thức sắp xếp dữ liệusort(), sortBy(), sortByDesc() 3.4 Các phương thức nhóm dữ liệugroupBy() 3.5 Các phương thức tách ghép, so sánh tập dữ liệutake(), chunk(), collapse(), combine(), zip(), diff(), implode(), merge(), reverse(), split(), union() 3.6 Các phương thức tính toán và thống kêaverage(), avg(), max(), min(), sum(), count(), every(), median() -> cực hay, random(), unique 3.7 Các phương thức lặp qua tập dữ liệumap(), transform(), reduce(), each(), flatMap, mapWithKey(), reject() 3.8 Các phương thức chuyển đổi dạng dữ liệutoArray(), toJson() all()Phương thức này trả về mảng các phần tử của collection
avg(), average()Hai hàm này trả về giá trị trung bình các phần tử trong collection.
chunk()Phương thức này chia collection thành nhiều các collection nhỏ hơn với kích thước collection được đưa vào trước.
Biến $chunks sau khi sử dụng phương thức chunk() sẽ chứa 3 collection con. Phương thức này rất hữu dụng khi sử dụng trong các view dùng với Bootstrap, ví dụ: bạn muốn in các sản phẩm ra màn hình theo kiểu lưới, mỗi hàng có 4 sản phẩm:
|