Giới thiệu
Trong Laravel, Collections là một tính năng mạnh mẽ và tiện lợi, cung cấp một cách linh hoạt để xử lý các mảng và dữ liệu tương tự như mảng. Tính năng này được hỗ trợ thông qua class Illuminate\Support\Collection, giúp bạn thực hiện các thao tác trên dữ liệu một cách dễ dàng mà không cần phải sử dụng quá nhiều vòng lặp phức tạp.
Collections cung cấp một loạt các phương thức hữu ích để thao tác với dữ liệu, từ các phương thức cơ bản như all() để lấy toàn bộ dữ liệu, cho đến những phương thức phức tạp hơn như chunkWhile() hoặc collapse() để nhóm hoặc xử lý dữ liệu một cách linh hoạt. Trong bài viết này, chúng ta sẽ khám phá cách sử dụng một số phương thức quan trọng của Collections trong Laravel 11.
1. Phương thức all()
Phương thức all() trả về tất cả các mục của collection dưới dạng một mảng.
Cách sử dụng:
$collection = collect([1, 2, 3, 4]);
$allItems = $collection->all();
print_r($allItems);Kết quả:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)2. Phương thức average() hoặc avg()
Phương thức average() (hoặc avg()) trả về giá trị trung bình của các mục trong collection.
Cách sử dụng:
$collection = collect([10, 20, 30, 40]);
$average = $collection->average();
echo $average; // 253. Phương thức chunk()
Phương thức chunk() chia collection thành các phần nhỏ hơn với số lượng mục cụ thể.
Cách sử dụng:
$collection = collect([1, 2, 3, 4, 5, 6, 7]);
$chunks = $collection->chunk(3);
$chunks->all();Kết quả:
[
[1, 2, 3],
[4, 5, 6],
[7]
]4. Phương thức chunkWhile()
Phương thức chunkWhile() chia collection dựa trên một điều kiện được cung cấp.
Cách sử dụng:
$collection = collect([1, 2, 2, 3, 4, 4, 5]);
$chunks = $collection->chunkWhile(function ($value, $key, $chunk) {
return $value === 2;
});
$chunks->all();5. Phương thức collapse()
Phương thức collapse() hợp nhất một collection của các mảng con thành một collection duy nhất.
Cách sử dụng:
$collection = collect([[1, 2, 3], [4, 5, 6], [7, 8]]);
$collapsed = $collection->collapse();
print_r($collapsed->all());Kết quả:
[1, 2, 3, 4, 5, 6, 7, 8]6. Phương thức collect()
Phương thức collect() được sử dụng để tạo ra một collection từ bất kỳ mảng hoặc dữ liệu nào.
Cách sử dụng:
$collection = collect([1, 2, 3]);
print_r($collection->all());7. Phương thức combine()
Phương thức combine() kết hợp hai collection thành một, trong đó collection đầu tiên là khóa và collection thứ hai là giá trị.
Cách sử dụng:
$keys = collect(['name', 'age']);
$values = collect(['John', 30]);
$combined = $keys->combine($values);
print_r($combined->all());Kết quả:
['name' => 'John', 'age' => 30]8. Phương thức concat()
Phương thức concat() nối thêm các mục vào collection hiện có.
Cách sử dụng:
$collection = collect([1, 2, 3]);
$concatenated = $collection->concat([4, 5, 6]);
print_r($concatenated->all());9. Phương thức contains() và containsStrict()
contains()kiểm tra xem collection có chứa một giá trị cụ thể không.containsStrict()tương tự nhưng kiểm tra cả kiểu dữ liệu.
Cách sử dụng:
$collection = collect([1, 2, 3]);
$contains = $collection->contains(2); // trueStrict mode:
$containsStrict = $collection->containsStrict('2'); // false10. Phương thức count() và countBy()
count()đếm số lượng phần tử trong collection.countBy()đếm số lần xuất hiện của từng giá trị trong collection.
Cách sử dụng:
$collection = collect([1, 2, 2, 3, 3, 3]);
echo $collection->count(); // 6countBy:
$counted = $collection->countBy();
print_r($counted->all());Kết quả:
[1 => 1, 2 => 2, 3 => 3]11. Phương thức crossJoin()
Phương thức crossJoin() tạo tất cả các kết hợp có thể giữa các giá trị của các collection khác nhau.
Cách sử dụng:
$collection = collect([1, 2]);
$crossJoined = $collection->crossJoin([3, 4]);
print_r($crossJoined->all());12. Phương thức dd()
Phương thức dd() là phương thức tiện lợi dùng để "dump and die", hiển thị nội dung và dừng chương trình.
Cách sử dụng:
$collection = collect([1, 2, 3]);
$collection->dd(); // Hiển thị dữ liệu và dừng chương trình13. Phương thức diff(), diffAssoc(), và diffKeys()
diff()so sánh hai collection và trả về các mục khác nhau.diffAssoc()so sánh cả khóa và giá trị.diffKeys()so sánh chỉ dựa trên khóa.
Cách sử dụng:
$collection1 = collect([1, 2, 3]);
$collection2 = collect([2, 3, 4]);
$diff = $collection1->diff($collection2);14. Phương thức dump()
Phương thức dump() hiển thị nội dung của collection nhưng không dừng chương trình.
Cách sử dụng:
$collection = collect([1, 2, 3]);
$collection->dump();15. Phương thức duplicates() và duplicatesStrict()
duplicates()trả về các phần tử trùng lặp.duplicatesStrict()so sánh nghiêm ngặt về kiểu dữ liệu.
Cách sử dụng:
$collection = collect([1, 2, 2, 3, '3']);
$duplicates = $collection->duplicates();
print_r($duplicates->all());16. Phương thức each() và eachSpread()
each()lặp qua các mục trong collection và áp dụng một callback.eachSpread()áp dụng callback với nhiều tham số.
Cách sử dụng:
$collection = collect([1, 2, 3]);
$collection->each(function ($item) {
echo $item;
});17. Phương thức every()
Phương thức every() kiểm tra xem tất cả các mục có thỏa mãn điều kiện nhất định không.
Cách sử dụng:
$collection = collect([2, 4, 6]);
$allEven = $collection->every(fn($value) => $value % 2 === 0);18. Phương thức except()
Phương thức except() loại bỏ các mục có khóa cụ thể.
Cách sử dụng:
$collection = collect(['name' => 'John', 'age' => 30]);
$excepted = $collection->except(['age']);19. Phương thức filter()
Phương thức filter() lọc các mục trong collection dựa trên một điều kiện cụ thể.
Cách sử dụng:
$collection = collect([1, 2, 3, 4]);
$filtered = $collection->filter(function ($value) {
return $value > 2;
});20. Phương thức first() và firstOrFail()
first()trả về phần tử đầu tiên thỏa mãn điều kiện.firstOrFail()trả về lỗi nếu không tìm thấy phần tử.
Cách sử dụng:
$collection = collect([1, 2, 3]);
$first = $collection->first(fn($value) => $value > 1);Kết luận
Laravel Collections là một tính năng mạnh mẽ giúp bạn dễ dàng thao tác dữ liệu mà không cần phải viết quá nhiều vòng lặp hoặc logic phức tạp. Trong bài viết này, chúng ta đã tìm hiểu một số phương thức quan trọng của Collections, từ các phương thức cơ bản như all(), count(), đến các phương thức nâng cao như chunkWhile(), diffKeys().
Hãy theo dõi bài viết tiếp theo để tìm hiểu thêm về các phương thức khác trong Collections!
Tác giả: Đội ngũ CodeTuthub.com









