Laravel’de Koleksiyonlar (Collections) İşlemleri

tarafından
379
Laravel’de Koleksiyonlar (Collections) İşlemleri
Güzel Hosting

PHP ‘de array olarak bildiğimiz diziler işlemlerimizde ne kadar kolaylıklar sağladığını bu işlerle uğraşanların bildiği bir şeydir. Ancak bize bazı kolaylıklar sunmuş olsa da bazı eksikler yaşanabiliyor, bu yaşadığımız eksiklerin tamamlaması için bize oluşturduğumuz dizilere sarmayan gelişmiş bir sınıf laravel framework ‘te bulunmaktadır. Bu sınıf ile bir çok method’a çok basit bir şekilde ulaşabiliyoruz. Laravel’de bu işlemlere collections Türkçe karşıgı koleksiyonlar olarak adlandırabiliriz.
Gelelim kullanıma öncelikle collection’ları geçirebilmek için verilerin array yani bir dizi olduğuna dikkat etmemiz gerekiyor.

$ids = [1,2,3,4,5,6];
return dd($ids);

Üst Kısımdaki veriyi kontrol ettiğimizde verinin bize dönüşü array ifade olduğunu görebiliriz. Burada kullanmış olduğumuz dd() ise var_dump() , print_r() ‘nin daha geliştirmiş halini görüntüleyebiliriz. Gelin şimdi $ids değişkenimizi collection sınıfına çevirelim.

$ids = collect([1,2,3,4,5,6]);
return dd($ids);

Üst kısımdaki method’u ilgili array ifadenin üstünde geçirerek ifadeyi otomatik olarak collect ifadeye çevirebiliriz.
Artık bu sınıftan geçirdiğimize göre collections sınıfının bize sunduğum imkanlardan yararlanabiliriz. Yazımızda anlayabilmemiz için bir kaç method’undan bahsedeceğim.
Diğer methodların hepsine laravel dökümantasyondan ulaşabilirsiniz.
Avg() ile sayılarınızın ortalamasını çok hızlı bir şekilde tespit edin.

collect([1, 2, 3, 4, 5])->avg();
// 3

Chunk() ile collections içerisinde bulunan ifadeleri yeniden belirlediğimiz düzene göre dizilere çevirelim.

$collection = collect([1, 2, 3, 4, 5, 6, 7, 8]);
$chunks = $collection->chunk(4);
$chunks->toArray();
// [[1, 2, 3, 4], [5, 6, 7, 8]]

Üst kısımdaki kodu incelediğimiz chunk(4) ile dizi içerisinde sayıları 4 ‘erli olarak gruplandırdı, biz bunu 5 deseydik çıktısı alt kısımdaki gibi olacaktır. Burada verdiğimiz sayılarda dizilerdeki gibi 0’dan başlamıyor.

$collection = collect([1, 2, 3, 4, 5, 6, 7, 8]);
$chunks = $collection->chunk(5);
$chunks->toArray();
// [[1, 2, 3, 4, 5], [6, 7, 8]]

Üst kısımdaki kodu incelediğimizde sayıların 5’erli olarak gruplandırdığınız geri kalanını diğer diziye attığını görebiliriz. Burada dizi içerisinde sayılarımız 11’e kadar olsaydı alt kısımdaki gibi bir çıktı alacaktık.

$collection = collect([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]);
$chunks = $collection->chunk(5);
$chunks->toArray();
// [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11]]

Üst kısımdaki örnekten sonra bunu foreach ifade ile blade template’de görüntülemeye kontrol edelim.

@foreach ($products->chunk(3) as $chunk)
    <div class="row">
        @foreach ($chunk as $product)
            <div class="col-xs-4">{{ $product->name }}</div>
        @endforeach
    </div>
@endforeach

Üst kısımdaki $products değişkenin control’den bize collections bir sınıf olarak geldiğini unutmayalım biz bunu chunk method’undan geçirerek 3’erli gruplara ayırdık. Foreach bize her 3 gruplamadan sonra yeni bir

kodu ile diğer index’i yazmaya devam edecektir.
Collapse() Chunk() tam tersi dizileri birleştirme method olarak kullanılabilir.

$collection = collect([[1, 2, 3], [4, 5, 6], [7, 8, 9]]);
$collapsed = $collection->collapse();
$collapsed->all();
// [1, 2, 3, 4, 5, 6, 7, 8, 9]

toArray() Collections ifadeyi tekrar array ifadeye çevirir.

$collection = collect(['name' => 'Desk', 'price' => 200]);
$collection->toArray();
/*
    [
        ['name' => 'Desk', 'price' => 200],
    ]
*/

toJson() Collections ifadeyi json olarak çıktısını verir.

$collection = collect(['name' => 'Desk', 'price' => 200]);
$collection->toJson();
// '{"name":"Desk", "price":200}'

Collections işlemlerinde unutulmaması gereken collections’u bir methodtan geçirdiğimizde bu mevcut collectionu etkilemeyerek çoğaltarak daha fazla methoda ulaşabiliriz. Gelin bunu alt kısımda bir örnekle anlatalım.

$collection = collect(['name' => 'Desk', 'price' => 200]);
$collection->toJson();
// '{"name":"Desk", "price":200}'
$collection->toArray();
/*
    [
        ['name' => 'Desk', 'price' => 200],
    ]
*/

Daha çok dökümantasyonu inceleyerek bir çok method’a ulaşabilirsiniz. Emin olun çok eğlenceli ve işe yarayan methodlar bizler için sunulmuş.
Daha ayrıntılı bilgi için laravel dökümantasyonunu inceleyebilirsiniz.
Yararlı olabildiysem ne mutlu, Hatam var ise bildirilirse düzeltebilirim.