Giới thiệu
Chào mừng bạn đến với phần 2 của loạt bài hướng dẫn về Collections trong Laravel 11. Ở phần 1, chúng ta đã tìm hiểu các phương thức cơ bản như all(), average(), chunk() và nhiều phương thức hữu ích khác. Trong phần này, chúng ta sẽ tiếp tục khám phá thêm nhiều phương thức mạnh mẽ khác mà Collections cung cấp, giúp bạn thao tác với dữ liệu một cách hiệu quả và dễ dàng hơn.
Xem lại phần 1: Hướng dẫn toàn tập về Collections trong Laravel 11.
1. Phương thức firstWhere()
Phương thức firstWhere() trả về phần tử đầu tiên khớp với một điều kiện cụ thể.
Cách sử dụng:
$collection = collect([
['id' => 1, 'name' => 'John'],
['id' => 2, 'name' => 'Jane'],
['id' => 3, 'name' => 'Doe'],
]);
$first = $collection->firstWhere('name', 'Jane');
print_r($first);Kết quả:
['id' => 2, 'name' => 'Jane']2. Phương thức flatMap()
Phương thức flatMap() ánh xạ và làm phẳng một collection hai chiều thành một chiều.
Cách sử dụng:
$collection = collect([
['name' => 'John', 'hobbies' => ['Reading', 'Swimming']],
['name' => 'Jane', 'hobbies' => ['Cycling']],
]);
$flattened = $collection->flatMap(function ($item) {
return $item['hobbies'];
});
print_r($flattened->all());Kết quả:
['Reading', 'Swimming', 'Cycling']3. Phương thức flatten()
Phương thức flatten() làm phẳng một collection đa chiều thành một collection một chiều.
Cách sử dụng:
$collection = collect([1, 2, [3, 4, [5, 6]], 7]);
$flattened = $collection->flatten();
print_r($flattened->all());Kết quả:
[1, 2, 3, 4, 5, 6, 7]4. Phương thức flip()
Phương thức flip() hoán đổi các giá trị thành khóa và ngược lại.
Cách sử dụng:
$collection = collect(['name' => 'John', 'age' => 30]);
$flipped = $collection->flip();
print_r($flipped->all());Kết quả:
['John' => 'name', 30 => 'age']5. Phương thức forPage()
Phương thức forPage() trả về một trang cụ thể của các mục trong collection.
Cách sử dụng:
$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9]);
$page = $collection->forPage(2, 3);
print_r($page->all());Kết quả:
[4, 5, 6]6. Phương thức get()
Phương thức get() trả về giá trị của khóa cụ thể trong collection hoặc giá trị mặc định nếu không có.
Cách sử dụng:
$collection = collect(['name' => 'John', 'age' => 30]);
$name = $collection->get('name');
$address = $collection->get('address', 'Chưa có địa chỉ');7. Phương thức groupBy()
Phương thức groupBy() nhóm các mục trong collection dựa trên một khóa hoặc callback.
Cách sử dụng:
$collection = collect([
['name' => 'John', 'department' => 'Sales'],
['name' => 'Jane', 'department' => 'Marketing'],
['name' => 'Doe', 'department' => 'Sales'],
]);
$grouped = $collection->groupBy('department');
print_r($grouped->toArray());Kết quả:
[
'Sales' => [
['name' => 'John', 'department' => 'Sales'],
['name' => 'Doe', 'department' => 'Sales']
],
'Marketing' => [
['name' => 'Jane', 'department' => 'Marketing']
]
]8. Phương thức has()
Phương thức has() kiểm tra xem một khóa cụ thể có tồn tại trong collection hay không.
Cách sử dụng:
$collection = collect(['name' => 'John', 'age' => 30]);
$hasName = $collection->has('name'); // true
$hasAddress = $collection->has('address'); // false9. Phương thức implode()
Phương thức implode() nối các mục trong collection thành một chuỗi với dấu phân cách.
Cách sử dụng:
$collection = collect(['John', 'Jane', 'Doe']);
$imploded = $collection->implode(', ');
echo $imploded; // John, Jane, Doe10. Phương thức intersect(), intersectAssoc(), và intersectByKeys()
intersect()trả về các mục có trong cả hai collection.intersectAssoc()trả về các mục có cả giá trị và khóa giống nhau.intersectByKeys()trả về các mục có khóa giống nhau.
Cách sử dụng:
$collection1 = collect([1, 2, 3, 4]);
$collection2 = collect([2, 4, 6, 8]);
$intersect = $collection1->intersect($collection2);
print_r($intersect->all()); // [2, 4]11. Phương thức isEmpty() và isNotEmpty()
isEmpty()kiểm tra xem collection có rỗng không.isNotEmpty()kiểm tra xem collection có chứa bất kỳ phần tử nào không.
Cách sử dụng:
$collection = collect([]);
$isEmpty = $collection->isEmpty(); // true
$collection = collect([1]);
$isNotEmpty = $collection->isNotEmpty(); // true12. Phương thức join()
Phương thức join() nối các mục trong collection thành một chuỗi, có thể tùy chỉnh dấu phân cách.
Cách sử dụng:
$collection = collect(['John', 'Jane', 'Doe']);
$joined = $collection->join(', ', ' và ');
echo $joined; // John, Jane và Doe13. Phương thức keyBy()
Phương thức keyBy() ánh xạ các khóa trong collection dựa trên một khóa cụ thể hoặc callback.
Cách sử dụng:
$collection = collect([
['id' => 1, 'name' => 'John'],
['id' => 2, 'name' => 'Jane'],
]);
$keyed = $collection->keyBy('id');
print_r($keyed->all());14. Phương thức keys()
Phương thức keys() trả về tất cả các khóa trong collection.
Cách sử dụng:
$collection = collect(['name' => 'John', 'age' => 30]);
$keys = $collection->keys();
print_r($keys->all());15. Phương thức last()
Phương thức last() trả về phần tử cuối cùng trong collection.
Cách sử dụng:
$collection = collect([1, 2, 3, 4]);
$last = $collection->last();
echo $last; // 416. Phương thức macro()
Phương thức macro() cho phép bạn định nghĩa các phương thức tùy chỉnh cho tất cả các instance của collection.
Cách sử dụng:
use Illuminate\Support\Collection;
Collection::macro('toUpper', function () {
return $this->map(function ($value) {
return strtoupper($value);
});
});
$collection = collect(['john', 'jane']);
$upper = $collection->toUpper();
print_r($upper->all());17. Phương thức make()
Phương thức make() là một phương thức tĩnh để tạo collection từ một mảng hoặc một chuỗi.
Cách sử dụng:
$collection = Collection::make([1, 2, 3]);
print_r($collection->all());18. Phương thức map(), mapInto(), mapSpread(), mapToGroups(), mapWithKeys()
map(): Ánh xạ từng phần tử trong collection với callback.mapInto(): Ánh xạ và tạo đối tượng từ class chỉ định.mapSpread(): Ánh xạ với nhiều tham số.mapToGroups(): Nhóm các mục dựa trên khóa.mapWithKeys(): Ánh xạ và tạo collection mới với các khóa.
Cách sử dụng:
$collection = collect([1, 2, 3]);
$mapped = $collection->map(function ($item) {
return $item * 2;
});19. Phương thức max()
Phương thức max() trả về giá trị lớn nhất trong collection.
Cách sử dụng:
$collection = collect([1, 5, 3]);
$max = $collection->max();
echo $max; // 520. Phương thức median()
Phương thức median() trả về giá trị trung vị của collection.
Cách sử dụng:
$collection = collect([1, 2, 3, 4, 5]);
$median = $collection->median();
echo $median; // 321. Phương thức merge() và mergeRecursive()
merge(): Kết hợp hai collection lại với nhau.mergeRecursive(): Kết hợp hai collection với cấu trúc đa chiều.
Cách sử dụng:
$collection1 = collect(['name' => 'John']);
$collection2 = collect(['age' => 30]);
$merged = $collection1->merge($collection2);
print_r($merged->all());Kết luận
Trong phần 2 này, chúng ta đã tiếp tục khám phá nhiều phương thức mạnh mẽ của Laravel Collections như firstWhere(), flatMap(), groupBy(), và nhiều phương thức khác. Những phương thức này giúp bạn dễ dàng xử lý, ánh xạ, và thao tác dữ liệu một cách linh hoạt trong ứng dụng Laravel của mình.
Tác giả: Đội ngũ CodeTuthub.com









