Laravel Collect Kullanımı -1-

Laravel Collect Kullanımı -1-

Hepinize merhaba dostlarım 😉. Yine gelen güzel bir pazar günü ve yine karşınızda enerjik bir şekilde blog yazmak isteyen bir blogger yani ben karşınızdayım 😄. Biliyorsunuz her pazar sanki temel ihtiyacımmış gibi sürekli blog yazıyorum sizler de bunun farkındasınızdır dostlarım 😊. Öncelikle geçmiş bayramınızı canı gönülden kutluyorum (Yazarken az daha kodluyorum diyecektim 😄). Şimdi sizler diyorsunuzdur içinizden ve ben de aslında sizin yerinize demeye yavaş yavaş başlıyordum 😊

Enerjik hocamız acaba bu makalede ne anlatacak ne göreceğiz bu hafta ?

Yeni konular öğrenme hevesinizi taaa buralardan sezdim dostlarım 😊. O halde ben de sözü daha fazla uzatmadan hemen bu haftanın makalesi olan "Laravel Collect Kullanımı" konusundan ufakça bahsedeyim. 

Yalnız bu seri birazcık uzun olduğu için bunu bir seri olarak anlatcam dostlarım. Yani bu makalemde -1- serisini anlatıyor olacağım 😊

Nedir Bu Collect ? Faydalı Mı ?

Eveeeet geldik artık makalemize dostlarım. Laravel üzerinde collect kullanımından bahsedelim birazcık.

Şimdi dostlarım biliyorsunuz biz kodlama yaparken özellikle de web siteleri yaparken sıklıkla Laravel Framework'ünü kullanıyoruz (16 Ekim 2020 den beri ben de 😉). Heh işte bazı durumlarda diziler ile işlemler gerçekleştiriyoruz. Örneğin dizileri gruplama olsun içinde arama olsun birleştirme vs olsun bunları laravel üzerindeki collect fonksiyonuyla çok rahat bir şekilde gerçekleştirebiliyoruz (Dahası da var ama ben sadece aklıma gelenleri söylüyorum). Şimdi sizin aklınıza şu soru gelmiştir ben inanıyorum buna

E hocam biz zaten normal PHP üzerinde az da olsa bunları gerçekleştiriyoruz

Aslında güzel iyi hoş yapıyorsunuz da Laravel üzerinde de öğrensek bir şey kaybetmeyiz dostlarım bilgi bilgidir

Yararı konusuna gelecek olursak dostlarım normalde biz PHP üzerinde bunları satır satır uzun uzun işlemlerle yaparken Laravel üzerinde collect fonksiyonunu kullanarak yapmamız bize son derece hız sağlayacaktır 😊. O halde biz de daha fazla sözü uzatmadan hemen kodlama kısmımızı açıp işlemlerimizi gerçekleştirelim

Kodlama İşlemleri

Artık kodlama işlemlerine de geçsek fena olmaz dostlarım çok konuştum farkındayım kusuruma bakmayın 😊. Hemen proje ortamlarının kurulumunu gercekleştirelim. Harici olarak bir controller oluşturmamıza hiç gerek yok dostlarım sadece routes/web.php altında kodlama işlemleri gerçekleştireceğiz. 

Proje ortamlarınızı da bu konuşmamı yaparken oluşturdunuz varsayıyorum. Ve ufaktan konumuza girişimizi yapıyorum

all() Kullanımı

İsminden de anlayacağınız üzere dizi üzerinde yani collect ile işlem yaparken bütün kayıtların getirilme işlemini gerçekleştirmemize yarar. Hemen kodlama ekranımızdan da işlemleri gerçekleştirelim. Kodlama kısmımızı açıp

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    $data = ["MFSoftware","Blog","Muhammed","Fatih","BAĞCIVAN"];
    $result = collect($data)->all();
    dd($result);
});

şeklinde kodlarımızı yazalım. Daha sonra terminalimize gelip meşhur komutumuzu yani

php artisan serve

yazalım. Karşımıza gelen

Starting Laravel development server: http://127.0.0.1:8000

linke bastığımızda ekranımızda görünecen olan sonuç

array:5 [▼
  0 => "MFSoftware"
  1 => "Blog"
  2 => "Muhammed"
  3 => "Fatih"
  4 => "BAĞCIVAN"
]

olacaktır 😊. Yukarıda da dediğim gibi bize olan biten ne varsa hepsini getirdi 😊. Gelelim bir diğer işlemimize

avg() Kullanımı

Geldik o enfes isme dostlarım. Özellikle SQL üzerinde işlemler yapmış iseniz bunu görür görmez anlayacaksınız 😊. Bu methoddan kısaca bahsetmem gerekirse dostlarım bizim collect içerisine gönderdiğimiz dizi içerisindeki sayıların ortalamasını almaya yarıyor. Nasıl diye soracak olursanız hemen size bir örnek yapayım 😊

Route::get('/', function () {
    $data = [42,35,22];
    echo collect($data)->avg();  // ekrana 33 basacaktır
});

şeklinde basit bir kullanımı vardır dostlarım 😊. Şimdi sizin aklınıza bir soru geldi ben bunu sezdim dostlarım. Soru da biraz ağır soru olsun hadi

Hocam veri tabanından gelen bir kullanıcılar olsun mesela. Bunlar dizi olarak gelecek ya onların yaşlarının ortalamasını nasıl alabiliriz ?

Ben bu soruya harbiden helal olsun derim cidden helal olsun. Normalde bunu bir diziye tek tek ekletip oradan yapmak varken collect üzerinde yapılmasını merak etmeniz cidden efsane dostlarım 😊. O halde daha fazla uzatmadan hemen kodlama işlemimizi gerçekleştirelim

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    $data = [
        [
            "name" => "Yavuz Selim",
            "surname" => "ŞAHİN",
            "age" => 29
        ],
        [
            "name" => "Mustafa",
            "surname" => "KARTAL",
            "age" => 26
        ],
        [
            "name" => "Zafer",
            "surname" => "YILDIZ",
            "age" => 27
        ],
        [
            "name" => "Emrullah",
            "surname" => "TANIMA",
            "age" => 27
        ]
    ];

    $result = collect($data)->avg('age');
    echo $result; // ekran çıktısı: 27.25 olacaktır
});

şeklinde ekran çıktısı olacaktır dostlarım 😊. Bütün işlemlerimiz bu kadar basit 😊. Şimdi gelelim bir diğer işlemimize

chunk() Kullanımı

Özellikle verilerin front end tarafında belirli bootstrap classları ve tasarımsal kısmı girdiğinde işinize son derece yarayacak olan, aynı zamanda da az evvel bir projede de kullandığım chunk işleminin Laravel üzerinde collect kullanarak kullanımına hemen bakmayalım. Öncelikle ben mantığını ufacık bir şekilde anlatayım 😊

Dostlarım chunk kullanımının genel amacı bizim database den veya kendi oluşturduğumuz verileri gruplama yapmamızda son derece katkıda bulunur. Mesela 10 tane verimiz var diyelim. Biz bunları 3 er grupla dersek 3-3-3-1 şeklinde gruplayacaktır (Futbol için dizilim gibi oldu 😅 her neyse). Biz de gelin bunu şimdi kodlama üzerinden gerçekleştirelim

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    $data = [
        [
            "product" => "Ayakkabı",
            "price" => 150.12
        ],
        [
            "product" => "Çanta",
            "price" => 100
        ],
        [
            "product" => "Kol Saati",
            "price" => 400
        ],
        [
            "product" => "Bileklik",
            "price" => 80
        ],
        [
            "product" => "Gömlek",
            "price" => 150
        ]
    ];

    $result = collect($data)->chunk(2);
    dd($result);
});

şeklinde kodlarımızı yazdık dostlarım. Ekranımıza gelecek olan çıktı ise

Illuminate\Support\Collection {#279 ▼
  #items: array:3 [▼
    0 => Illuminate\Support\Collection {#273 ▼
      #items: array:2 [▼
        0 => array:2 [▼
          "product" => "Ayakkabı"
          "price" => 150.12
        ]
        1 => array:2 [▼
          "product" => "Çanta"
          "price" => 100
        ]
      ]
      #escapeWhenCastingToString: false
    }
    1 => Illuminate\Support\Collection {#275 ▼
      #items: array:2 [▼
        2 => array:2 [▼
          "product" => "Kol Saati"
          "price" => 400
        ]
        3 => array:2 [▼
          "product" => "Bileklik"
          "price" => 80
        ]
      ]
      #escapeWhenCastingToString: false
    }
    2 => Illuminate\Support\Collection {#277 ▼
      #items: array:1 [▼
        4 => array:2 [▼
          "product" => "Gömlek"
          "price" => 150
        ]
      ]
      #escapeWhenCastingToString: false
    }
  ]
  #escapeWhenCastingToString: false
}

şeklinde olacaktır 😊. Biraz karmaşık gibi olsa da pratik yaptıkça eliniz alışacaktır dostlarım 😊. Bu kısmı da anladığınızı varsayıyorum. Sözü uzatmadan hemen bir diğer kısma geçişimizi yapalım

collapse() Kullanımı

Bu methodun ismini de özellikle yazılımda front end tarafında bootstrap kullanan dostlarımın sıklıkla karşısına geliyordur bunda ben netim 😄. Ama buradaki durumu biraz farklı. Bu fonksiyonun amacı bizim normaldeki array_merge() fonksiyonumuzla benzer şekilde çalışıyor olmasıdır. Şimdi aklınızda "Acaba Nasıl Kullanılıyor Ki ?" şeklinde sorular olacaktır. Hemen buna kısaca bakalım. Hemen kodlama ekranımıza gelelim ve

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    $data = [
        ["Casper","Excalibur"],
        ["Oppo", "Realme C21"],
        ["Motorola","G5S"],
    ];
    $result = collect($data)->collapse();
    dd($result);
});

şeklinde kodlarımızı yazalım. Kodları çalıştırdığımızda ekranımıza gelecek olan çıktı

Illuminate\Support\Collection {#273 ▼
  #items: array:6 [▼
    0 => "Casper"
    1 => "Excalibur"
    2 => "Oppo"
    3 => "Realme C21"
    4 => "Motorola"
    5 => "G5S"
  ]
  #escapeWhenCastingToString: false
}

şeklinde karşımıza enfes bir şekilde çıktı gelecektir. İşlemlerimiz bu kadar basit dostlarım

Eveeeet dostlarım 😊. Bu yazımda Laravel Framework üzerinde Laravel Collect Kullanımı -1- konusunu elimden geldiğince dilim döndüğünce anlatmaya çalıştım. Umarım faydalı olmuşumdur. Konu başlarda biraz karmaşık veya zor gelebilir dostlarım anlıyorum. Özellikle öğrenme süreci içerisinde bu sorunlarla karşılaşmanız son derece doğaldır. Bu durumda sizlerden yapmanızı istediğim tek şey her yazımda da dediğim gibi "İstikrarlı ve azimli olmalı, bolca pratik yapmalısınız 😊" olacaktır. Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır 😊

Aynı zamanda 25 Aralık 2022 de kurmuş olduğum seyyaryazilimci.com soru cevap sitesi üzerinde yazılımda takıldığınız konuları sorabilir, aynı durumda olan yazılımcı dostlarımıza yardımda bulunabilirsiniz. Sorular ve cevaplar belirli bir süre admin onayından geçerek sistem üzerinde yayınlanmaktadır dostlarım bilginize 😊

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim 😊

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıLaravel Response Kullanımı
Sonraki YazıPHP User Role Permissions Yapımı
Yorumlar (1)
Mustafa KARTAL
08.05.2022

Muhammed hocam çok güzel bilgiler paylaşmışşın. Ellerine sağlık

Yorum Yapabilirsiniz