Dalam pengembangan aplikasi menggunakan Laravel, kita akan sering bekerja dengan data. Laravel Collection merupakan salah satu fitur dalam framework Laravel yang memudahkan proses manipulasi data. Collection menyediakan berbagai method dan cara yang efisien serta elegan untuk menangani hasil query database atau array menjadi objek, memungkinkan kita untuk memanipulasi data dengan cara yang lebih bersih dan mudah dibandingkan metode tradisional seperti menggunakan looping manual.
Apa itu Laravel Collection ?
Collection merupakan sebuah objek pembungkus (wrapper) yang disediakan oleh Laravel untuk bekerja dengan data array secara lebih mudah. Fitur ini mengubah array biasa menjadi instance dari kelas Illuminate\Support\Collection
. Collection memungkinkan kita untuk melakukan chaining method untuk melakukan mapping dan reducing array. Secara umum, collection bersifat immutable, yang berarti setiap metode Collection akan menghasilkan instance Collection baru dan tidak mengbubah collection aslinya.
Biasanya untuk melakukan manipulasi data di PHP kita akan menggunakan loop atau function seperti array_map()
dan array_filter()
. Laravel Collection memberikan cara yang lebih rapi dan readable untuk melakukan hal tersebut.
Keuntungan Menggunakan Laravel Collection
1. Kode yang Lebih Bersih dan Singkat
Dengan Collection, kita bisa menghindari penggunaan foreach
atau for
berulang-ulang, karena Collection menyediakan metode chaining yang intuitif. Ini membuat kode lebih singkat dan lebih mudah dipahami.
2. Chaining Methods
Salah satu kekuatan Collection adalah kemampuannya untuk menggabungkan (chaining) metode. Kita bisa menerapkan beberapa operasi secara berurutan tanpa harus membuat variabel baru di setiap langkah.
3. Immutable
Collection biasanya immutable, artinya setiap operasi yang dilakukan akan mengembalikan Collection baru tanpa mengubah yang asli. Ini sangat bermanfaat untuk debugging dan memastikan data tetap konsisten.
4. Performa yang Baik
Laravel Collection dirancang untuk efisiensi. Alih-alih mengiterasi data dengan cara tradisional, Collection mengoptimalkan pemrosesan data di latar belakang.
Beberapa Metode Penting dalam Laravel Collection
1. map()
Metode map mengiterasi collection dan meneruskan setiap nilai ke callback yang diberikan. Metode map()
digunakan untuk mengubah setiap item dalam Collection dan mengembalikan Collection baru:
$collection = collect([1, 2, 3, 4, 5]);
$multiplied = $collection->map(function (int $item, int $key) {
return $item * 2;
});
$multiplied->all();
// [2, 4, 6, 8, 10]
2. filter()
Metode filter()
memungkinkan kita untuk memfilter item dalam Collection berdasarkan kondisi tertentu. Metode filter memfilter koleksi menggunakan callback yang diberikan kemudian hanya menyimpan item yang lolos pengkondisian :
$collection = collect([1, 2, 3, 4]);
$filtered = $collection->filter(function (int $value, int $key) {
return $value > 2;
});
$filtered->all();
// [3, 4]
Jika tidak ada callback yang diberikan, semua entri koleksi yang setara dengan false akan dihapus:
$collection = collect([1, 2, 3, null, false, '', 0, []]);
$collection->filter()->all();
// [1, 2, 3]
3. pluck()
Jika kita hanya ingin mengambil kolom tertentu dari setiap item dalam Collection, kita bisa menggunakan pluck()
. Metode ini akan mengambil semua nilai untuk key yang kita pilih:
$collection = collect([
['product_id' => 'prod-100', 'name' => 'Desk'],
['product_id' => 'prod-200', 'name' => 'Chair'],
]);
$plucked = $collection->pluck('name');
$plucked->all();
// ['Desk', 'Chair']
4. reduce()
Metode reduce() digunakan untuk menghitung nilai tunggal dari Collection. Kita bisa menjumlahkan, mengalikan, atau melakukan operasi agregat lainnya. Metode reduce mengurangi koleksi menjadi satu nilai dan meneruskan hasil dari setiap iterasi ke iterasi berikutnya:
$collection = collect([1, 2, 3]);
$total = $collection->reduce(function (?int $carry, int $item) {
return $carry + $item;
});
// 6
5. contains()
Metode contains() memungkinkan kita untuk memeriksa apakah Collection berisi item tertentu atau tidak. Ini sangat berguna untuk melakukan validasi data.
$collection = collect(['name' => 'Desk', 'price' => 100]);
$collection->contains('Desk');
// true
$collection->contains('New York');
// false
Kita dapat memberikan closure ke methode contains() untuk menentukan apakah sebuah elemen ada dalam koleksi yang cocok dengan pengkondisian yang diberikan:
$collection = collect([1, 2, 3, 4, 5]);
$collection->contains(function (int $value, int $key) {
return $value > 5;
});
// false
6. groupBy()
Metode groupBy() digunakan untuk mengelompokkan item dalam Collection berdasarkan nilai dari kolom tertentu
$collection = collect([
['account_id' => 'account-x10', 'product' => 'Chair'],
['account_id' => 'account-x10', 'product' => 'Bookcase'],
['account_id' => 'account-x11', 'product' => 'Desk'],
]);
$grouped = $collection->groupBy('account_id');
$grouped->all();
/*
[
'account-x10' => [
['account_id' => 'account-x10', 'product' => 'Chair'],
['account_id' => 'account-x10', 'product' => 'Bookcase'],
],
'account-x11' => [
['account_id' => 'account-x11', 'product' => 'Desk'],
],
]
*/
7. sortBy()
Untuk mengurutkan Collection berdasarkan nilai tertentu, kita bisa menggunakan sortBy(). Metode sortBy akan mengurutkan collection berdasarkan key yang diberikan :
$collection = collect([
['name' => 'Desk', 'price' => 200],
['name' => 'Chair', 'price' => 100],
['name' => 'Bookcase', 'price' => 150],
]);
$sorted = $collection->sortBy('price');
$sorted->values()->all();
/*
[
['name' => 'Chair', 'price' => 100],
['name' => 'Bookcase', 'price' => 150],
['name' => 'Desk', 'price' => 200],
]
*/
8. each()
Metode each()
mirip dengan map(), tetapi tidak mengembalikan Collection baru. Ini cocok untuk menjalankan operasi pada setiap item tanpa mengubah nilai. Metode ini meng-iterasi item-item dalam koleksi dan meneruskan setiap item ke closure :
$collection = collect([1, 2, 3, 4]);
$collection->each(function (int $item, int $key) {
// ...
});
Kesimpulan
Laravel Collection adalah fitur powerful yang memudahkan kita untuk memanipulasi data dengan metode yang bersih dan efisien. Metode seperti map()
, filter()
, dan pluck()
akan sangat membantu kita dalam melakukan pengolahan data. Masih banyak lagi metode Collection lainnya yang bisa kita temukan di dokumentasi resmi Laravel . Gunakan Collection untuk mempercepat dan mempermudah pengembangan aplikasi Laravel kamu!!