Bộ sưu tập trong Laravel 9

Tram Ho

Trong series tài liệu ôn thi Laravel Certification hôm nay mình xin phép giới thiệu về collections, mục đích để note lại những kiến thức để cho bản thân mình và các bạn theo dõi bài viết có một tài liệu “chi tiết”.

Bắt đầu nào!

I. Tổng quan về collections

Collection trong Laravel là một cấu trúc dữ liệu mạnh mẽ và linh hoạt, cho phép bạn làm việc với một tập hợp các phần tử dưới nhiều dạng khác nhau. Collection cung cấp cho bạn các phương thức để lọc, sắp xếp, biến đổi và xử lý dữ liệu trong tập hợp đó.

Collection được thiết kế để hoạt động hiệu quả với cơ sở dữ liệu và các hàm của PHP. Nó có thể được sử dụng để xử lý dữ liệu trả về từ các truy vấn cơ sở dữ liệu, hoặc để lọc, sắp xếp và hiển thị các bộ sưu tập phức tạp.

Một số tính năng của Collection trong Laravel bao gồm:

  • Các phương thức để lọc và sắp xếp các phần tử trong collection dựa trên các điều kiện khác nhau.
  • Các phương thức để biến đổi dữ liệu trong collection bằng cách thêm hoặc loại bỏ các phần tử.
  • Các phương thức để thực hiện các thao tác như map, reduce và filter trên collection.
  • Khả năng kết hợp các collection với nhau để tạo ra các collection mới.
  • Các phương thức để xử lý các phần tử trong collection theo cách linh hoạt.
  • Khả năng sử dụng collection với Eloquent để truy vấn và sắp xếp dữ liệu trong cơ sở dữ liệu.

Với Collection, bạn có thể thực hiện các thao tác phức tạp trên tập hợp các phần tử một cách dễ dàng và hiệu quả, giúp bạn tiết kiệm thời gian và tăng hiệu suất của ứng dụng Laravel của bạn.

II. Các hàm collections trong Laravel 9

Tổng sơ sơ là có gần 70 hàm collections trong Laravel và tôi xin phép được giải thích chi tiết từng hàm một. Bài này có thể sẽ khá dài nhưng cô đọng cực nhiều kiến thức

Tôi sẽ áp dụng collect mẫu này , ae hãy nhớ tới cuối bài viết.

1. Thêm phần tử trong collections

Thêm phần tử vào collection:

  1. push($value): Thêm một phần tử vào cuối collection (1 phần tử hoặc 1 mảng các phần tử).

image.png

image.png

  1. put($key, $value): Thêm hoặc cập nhật một phần tử hoặc một mảng với key tương ứng trong collection.
    Nếu $key đã tồn tại thì put sẽ ghi đè value mới còn không thì sẽ thêm với keyvalue tương ứng.

    Ví dụ: dd($countries->put(2, "American"))

image.png

image.png

  1. prepend($value): Thêm một phần tử vào đầu collection.

    Ví dụ: dd($countries->prepend(2, "American"))

image.png

2. Xóa phần tử trong collection

  1. forget($key): Xóa phần tử với key tương ứng khỏi collection, nếu key không có thì k có chuyện gì xảy ra.

    Ví dụ: dd($countries->forget(1))

    image.png

  2. pull($key, $default = null): Xóa phần tử với key tương ứng khỏi collection và trả về giá trị của phần tử đó, nếu key không tồn tại thì trả về null . Giả sử ta set biến $default = "ahihihi" thì hiển thị ahihihi thay vì null
  3. pop(): Xóa phần tử cuối cùng khỏi collection và trả về giá trị của phần tử đó.
  4. reject($callback): Xóa tất cả các phần tử trong collection không thỏa mãn điều kiện của hàm callback. (Đây cũng là 1 method để lọc phẩn tử không thỏa mãn điều kiện hàm callback trong collection , nhưng nếu có ai hỏi bạn liệt kê một số method để xóa thì method này cũng thỏa mãn điều kiện , rõ ràng là nó có xóa mà)

    Ví dụ:

image.png

3. Chỉnh sửa phần tử trong collection

  1. transform($key): Áp dụng hàm callback lên mỗi phần tử của collection và ghi đè các giá trị cũ bằng giá trị mới.

Ví dụ

image.png

  1. map($callback): Tạo ra một collection mới bằng cách áp dụng hàm callback lên mỗi phần tử của collection.

image.png

  1. merge($items): Tạo ra một collection mới bằng cách kết hợp collection hiện tại với một collection khác hoặc một mảng.

Ví dụ ta có như sau :

image.png

  1. replace($items): Tạo ra một collection mới bằng cách thay thế tất cả các phần tử trong collection bằng các phần tử khác được cung cấp trong một mảng hoặc collection mới.

image.png

4. Sắp xếp phần tử trong collection

  1. sort(): Sắp xếp một Collection theo thứ tự tăng dần của giá trị của phần tử.

  1. sortBy($key) : Sắp xếp một Collection bằng cách sử dụng một key.

  1. sortByDesc($key): Sắp xếp một Collection theo thứ tự giảm dần bằng cách sử dụng một key.

  1. sortKeys(): Sắp xếp một Collection theo thứ tự tăng dần của key của các phần tử.

Kết quả:

  1. sortKeysDesc(): Sắp xếp một Collection theo thứ tự giảm dần của key của các phần tử.

Kết quả:

5. Lọc phần tử trong collection

  1. filter($callback): Lọc các phần tử của collection dựa trên điều kiện được chỉ định trong $callback và trả về một collection mới chứa các phần tử đã được lọc.

  1. reject($callback): Tương tự như phương thức filter(), nhưng trả về các phần tử không thỏa điều kiện.

  1. where($key, $operator, $value = null): Lọc các phần tử của collection dựa trên giá trị của một thuộc tính nào đó. $key là tên thuộc tính, $operator là toán tử so sánh (ví dụ như =, >, <…), và $value là giá trị để so sánh. Nếu chỉ có 2 tham số trong function where => operator mặc định là “=”

Kết quả:

  1. whereStrict($key, $value): Tương tự như phương thức where(), nhưng so sánh giá trị của thuộc tính và $value theo kiểu so sánh chính xác (bao gồm kiểu dữ liệu). Ví dụ

Kết quả:

  1. whereIn($key, $values): Lọc các phần tử có giá trị của thuộc tính $key nằm trong một mảng $values.

Kết quả:

  1. whereInStrict($key, $values): Tương tự whereIn nhưng sẽ set thêm cả kiểu dữ liệu nữa. Ví dụ:

  1. whereNotIn($key, $values): Tương tự như phương thức whereIn(), nhưng lọc các phần tử không nằm trong mảng $values.

Kết quả:

  1. whereNotInStrict($key, $values): Tương tự như phương thức whereNotIn(), nhưng lọc các phần tử không nằm trong mảng $values.

Kết quả:

  1. whereBetween($key, $values): Lọc các phần tử có giá trị của thuộc tính $key nằm trong khoảng giá trị từ $values[0] đến $values[1].

Ví dụ :

Kết quả:

  1. whereNull($key): Lọc các phần tử có giá trị của thuộc tính $keynull.

Kết quả:

  1. whereNotNull($key): Lọc các phần tử có giá trị của thuộc tính $key khác null.

Kết quả:

5. Collections hỗ trợ xử lý chuỗi, mảng

  1. join($glue, $finalGlue = null): được sử dụng để kết hợp các phần tử của một collection thành một chuỗi duy nhất, với các phần tử được ngăn cách bằng một chuỗi xác định.

Trong đó :

  • $glue: là chuỗi ngăn cách giữa các phần tử.
  • $finalGlue: là chuỗi ngăn cách giữa phần tử cuối cùng và phần tử liền trước đó. Nếu bạn không muốn có chuỗi ngăn cách ở phần tử cuối cùng, thì giá trị của $finalGlue sẽ là null.

Ví dụ:

  1. crossJoin(…$collections): là một phương thức của Collection trong Laravel, nó được sử dụng để tính toán tất cả các tổ hợp của các giá trị trong các collection được cung cấp.

Ví dụ :

Kết quả:

  1. mapInto(string $class): Áp dụng một hàm lên mỗi phần tử trong collection và trả về một collection mới. Trong trường hợp này, ta có thể sử dụng phương thức map để xử lý các chuỗi trong collection.

  1. mapSpread($callback): là một phương thức trong Collection của Laravel, được sử dụng để biến đổi các phần tử trong Collection bằng cách sử dụng một hàm callback, tuy nhiên với cách hoạt động khác so với các phương thức map()mapWithKeys().

Điểm khác biệt của mapSpread() so với các phương thức map()mapWithKeys() là tham số truyền vào hàm callback. Thay vì truyền vào một giá trị duy nhất cho mỗi phần tử trong Collection, mapSpread() sẽ truyền vào nhiều tham số tương ứng với các giá trị của từng phần tử trong Collection.

Ví dụ:

  1. mapToGroups($callback) trong Laravel Collection được sử dụng để biến đổi một Collection thành một mảng được nhóm lại theo một thuộc tính cụ thể.

Ví dụ:

Kết quả:

  1. mapWithKeys($callback): trong Laravel Collection cho phép biến đổi các giá trị của Collection thành một mảng kết hợp key-value mới. Nó sử dụng một callback function để thực hiện việc này và trả về một Collection mới với các cặp key-value được tạo ra bởi callback function.

Ví dụ :

Kết quả:

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo