Laravel Collection : Part 4

Fitur keren yang dapat membantumu dalam mengolah data

Alansekha
5 min readApr 30, 2020

Hi . . . Kita sudah membahas lumayan banyak method dari laravel collection dan kali ini kita akan melanjutkannya. G usah basa basi, skuy …

16. Map Into

Map into berfungsi untuk mengambil setiap item dari dalam collection dan mengirimnya ke sebuah class. Untuk lebih jelasnya kalian bisa melihat contoh dibawah ini.

Mari bahas code diatas. Kita membuat sebuah class bernama converter dimana didalamnya kita bisa mengubah item dari collection class CollectionExample ke dalam centimeter.

Jika kalian lihat, mapInto meminta kita untuk memberitahu class apa yang ingin digunakan. Kita memasukkan class converter didalamnya. Setelah mapInto sudah tau kitaakan menggunakan class converter, maka selanjutnya kita eksekusi dengan method map. Dimana di part sebelumnya kita sudah membahas fungsi dari method map.

Kita ambil setiap item dari collection $meter dengan map, lalu kita eksekusi dengan method toCentimeters dari class converter. Dan akhirnya kita bisa mendapatkan hasil seperti yang ada di terminal.

Map into mengembalikan sebuah collection baru. Lihat contoh dibawah ini.

Jika kita me return $meter, dia akan mengembalikan collection asli dari $ meter. Jika kalian ingin mendapatkan hasil seperti tadi, kalian bisa membuat variable baru dan mereturn variable tersebut. Atau kalian juga bisa menggunakan cara pertama seperti contoh pertama yang sudah kita bahas.

17. Map Spread

Sebelum masuk ke Map Spread, mari kita bahas terlebih dahulu apa itu method chunk. method chunk berfungsi untuk membagi bagi item dari sebuah collection sesuai dengan parameter dari chunk tersebut. Lihat contoh dibawah ini.

Seperti yang dilihat. Chunk akan membagi item dari collection dan memasukkannya ke dalam sebuah array asosiatif . Nah jika sudah seperti ini, kita bisa memanipulasi hasil dari chunk dengan mapSpread. Lihat contoh dibawah ini.

Ho… apa yang sebenarnya terjadi disini. Lihat didalam mapSpread kita mengembalikan callback berupa function dimana parameternya adalah $a dan $b. $a disini merupakan array index[0] dari collection baru yang sudah dibuat oleh chunk. Lihat contoh pertama. Disana array index[0] bernilai 1 dan array index[1] bernilai 2. Dan jika kita kalikan menjadi 2. Seperti hasil di atas.

Mungkin kalian akan bertanya tanya, bagaimana jika item dari collection berjumlah ganjil sedangkan chunk kita berjumlah genap. Apa yang akan terjadi jika kita melakukan mapSpread?

Secara default mapSpread akan mengambil nilai dari keynya. Lihat contoh dibawah ini.

Kita mendapatkan tambahan 21. Darimana asalnya? asalnya adalah item 7 dari collection dikalikan dengan keynya yaitu 3. Karena inilah kalian harus lebih berhati hati ketika menggunakan mapSpread karena hasilnya terkadang tidak sesuai dengan harapan.

Kasus lainnya adalah ketika jumlah dari item collection dan chunk sudah sama. Namun kalian memberikan parameter lebih di function mapSpread. Sudah dipastikan kalian akan mendapatkan error. Lihat contoh dibawah.

mapSpread tidak mengetahui nilai dari $c karena chunk hanya membagi item menjadi 2, 2. Maka dari itu parameter yang diberikan kepada function mapSpread harus bernilai sama dengan parameter chunk.

18. Map To Dictionary dan Map To Group

Map To Dictionary dan Map To Group pada dasarnya berfungsi sama yaitu untuk mengelompokkan sebuah array. Bedanya adalah Map To Dictionary mengembalikan sebuah array, sedangkan Map To Group mengembalikan sebuah collection. Untuk lebih mudahnya lihat contoh dibawah ini.

bisa kita lihat, mapDictionary mengelompokkan apples dengan harga 100 dan 90. Lalu bananas dengan harga 50 dan 100. mapToDictionary membuat products menjadi sebuah key dan valuenya adalah harga dari product yang sesuai. Sehingga hasilnya adalah seperti diatas. Dan mari kita lihat mapToGroup dan pahami apa perbedaannya.

Jika mapToDictionary mengembalikan value berupa array, maka mapToGroup mengembalikan value berupa collection. Pada beberapa kasus, ,mapToGroup bisa menjadi lebih berguna dibandingkan mapToDictionary. Semisal kalian ingin mencari product berdasarkan harga tertinggi. Kalian bisa melakukannya dengan mapToGroups. Lihat contoh dibawah.

Lihat kita mendapatkan apples dan bananas dengan harga tertinggi. Ayo kita coba ubah menjadi mapIntoDictionary tanpa mengubah yang lainnya dan lihat apa yang terjadi.

Sudah dipastikan akan ada eeror disana. Karena mapToDictionary mengembalikan value berupa array bukan collection. Dan itulah yang harus kalian ingat antara mapToDictionary dan mapToGroups.

19. Where dan Where Strict

Where dan Where Strict pada dasarnya berfungsi sama dengan where yang ada di sql query. Ayo kita lihat contoh dibawah ini.

Where akan mencari product dengan harga 50. Dimana berdasarkan contoh diatas product apples, dan pear yang mempunyai price 50. Sehingga hasilnya seperti contoh diatas. Selanjutnya kita coba dengan whereStrict dan lihat apa perbedaannya.

Kita tidak mendapatkan apa apa. Ini dikarenakan whereStrict juga melihat tipe data yang di passing. Jika kita lihat, item price di collection mempunyai value bertipe string. Sedangkan kita mencarinya dengan value tipe integer. Tentu saja hasilnya akan null. Sekarang ayo kita coba ganti valuenya menjadi tipe string.

Yah seperti yang dilihat, kita mendapatkan apa yang kita inginkan. Kalian juga bisa menggunakan operator perbandingan semisal kalian ingin mencari product dengan harga lebih dari 50. Lihat contoh dibawah ini.

Dan kita mendapatkannya. Oh perlu diingat kita tidak bisa menggunakannya pada whereStrict. Karena pada dasarnya whereStrict sama saja dengan where(‘===’). Dan itulah yang harus kalian ingat antara where dan whereStrict.

Mungkin sampai disini dulu pembahasan kita tentang laravel collection. Kalian bisa melakukan experiment dengan method method yang sudah kita pelajari. Semoga bisa bermanfaat. Semoga Sukses !!

Referensi :

https://www.youtube.com/playlist?list=PLpzy7FIRqpGCCm3pJHtDKYHlHJclb9V9m

--

--

Alansekha
Alansekha

Written by Alansekha

Hello there, Alan Sekha here. Nice to meet you

No responses yet