Làm thứ làm cho Laravel Request của bạn thú vị hơn

Laravel Collection – Giới thiệu và sử dụng

Chào các bạn,

Nay mình sẽ đi qua một feature cũng khá là hay mà Laravel đã cung cấp cho chúng ta. Đó chính là: Laravel Collection.

Nếu các bạn đã làm việc với C# (.NET) thì chắc cũng sẽ biết sơ sơ collection là gì và nó hỗ trợ cho chúng ta cái gì.

Với Laravel cũng tương tự như vậy. nó sẽ wrap lại cái array của các bạn lại để sử dụng và xử lý data tốt hơn. Nó cung cấp cho bạn khá là nhiều methods để sử dụng thay vì ta fải sử dụng các function array của PHP (mất công nhớ :v).

Nếu các bạn đã sử dụng PHPStorm, nó sẽ suggest đầy đủ method cho bạn khi sử dụng, quá ngon nhỉ 😀

1/ Khởi tạo Laravel Collection

Ta sẽ dùng global helper function của Laravel để khởi tạo ra 1 collection:

// normal array
$collection = collect([1, 2, 3]);

// assoc array
$collection = collect([
	['first_name' => 'ABC', 'last_name' => 'XYZ'],
	['first_name' => 'Hello', 'last_name' => 'SethPhat'],
]);

$collection = collect([
	'first_name': 'Seth Phat',
	'last_name': 'Blog',
	'Age': '22',
	'Website': 'https://SethPhat.com',
	'introduce': 'Hello world'
]);

Ngoài ra, khi các bạn query với Eloquent Model và sử dụng method ->get(), nó sẽ trả về cho bạn 1 Laravel Collection:

// this is a laravel collection
$listUser = UserModel::all();
$listUser = UserModel::where('ID', '>', '0')->get();

2/ Một số methods thường dùng trong Laravel Collection

First & Last

Dùng để lấy phần tử đầu tiên hay cuối cùng trong collection:

// this is a laravel collection
$listUser = UserModel::all();

// first user
$first_user = $listUser->first();

// last user
$last_user = $listUser->last();

Where

Dùng để filter các phần tử theo 1 điều kiện nào đó (hàm where này tương tự như DB Where)

// this is a laravel collection
$listUser = UserModel::all();

// filter user by name
$filteredUsers = $listUser->where('Name', 'SethPhat');

Count

Dùng để lấy tổng số phần tử trong collection

// this is a laravel collection
$listUser = UserModel::all();

// total user
$total = $listUser->count();

SortBy

Dùng để sắp xếp collection

// this is a laravel collection
$listUser = UserModel::all();

// sort by age asc
$age_sorted = $listUser->sortBy('Age');

// sort by age desc
$age_sorted = $listUser->sortByDesc('Age');

Note: các bạn có thể dùng sortByDesc để sắp xếp từ cao xuống thấp.

Pluck

Dùng để sinh ra 1 array theo một property nào đó, sẽ sinh ra assoc array nếu truyền vào 2 property

Với loại truyền vào 2 params, ta thường dùng để nó tạo ra 1 mảng sử dụng cho control select (id – text) 😀

// this is a laravel collection
$listUser = UserModel::all();

// pluck to get ID only
$age_sorted = $listUser->pluck('ID'); //[1,2,3,...]

// pluck to get assoc ID => Name
$age_sorted = $listUser->sortByDesc('Name', 'ID'); //[1 => 'ABC', 2 => 'XYZ',...]

Contains

Tìm xem giá trị có trong mảng hay không

// this is a laravel collection
$listUser = UserModel::all();

// find if SethPhat existed in $listUser
$haveUserName = $listUser->contains('SethPhat');

Và còn rất là nhiều methods nữa, các bạn có thể tìm hiểu đầy đủ tại đây: https://laravel.com/docs/5.6/collections#available-methods

3/ Kết luận

Vậy với Laravel Collection, dường như việc xử lý và tương tác, sử dụng data bằng array nó đơn giản và dễ chịu hơn nhỉ? 😀

Các bạn thử trải nghiệm qua nhé, rất hay đấy 😀

Cám ơn các bạn đã quan tâm theo dõi!

Tìm hiểu thêm về Laravel tại: https://sethphat.com/sp-category/lap-trinh/laravel-5-php

facebook
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Leave a Reply

Your email address will not be published. Required fields are marked *

Bình luận qua Facebook