Laravel Query Builder İşlemi -2-

Laravel Query Builder İşlemi -2-

Hepinize merhaba dostlarım 😊. Bu yazımda sizlere daha önceden giriş yaptığımız Laravel Query Builder işlemlerine devam edeceğiz.

Önceki yazımda Query Builder tam olarak nedir, neden kullanılır bunlardan bahsetmiştim. Okumayan dostlarım için de buradan rahatlıkla Laravel Query Builder İşlemi -1- yazıma ulaşabilir. Bu konu fark ettiğiniz üzere ufak bir seri niteliğinde olacak. Sözü daha fazla uzatmadan konumuza girişimizi yapalım diyorum

1-) ORDERBY KULLANIMI

Eveeeet geldik konumuzun ilk başlığı olan OrderBy kullanımına. İsmi SQL den tanıdık gelmiştir dostlarım. Order By komutu hatırlarsanız sıralama işlemini yapıyordu. Laravel üzerinde Query Builder kullanımında da aynı görevi üstlenmek üzere OrderBy methodu geliştirilmiş. Bu method çalışması için 2 adet parametre alıyor. Bunlara gelin hızlıca bir bakalım

  1. Parametre: Kolon Adı (zorunlu)
  2. Parametre: Sıralama Tipi (zorunlu değil) (boş bırakırsanız default olarak ASC olarak sıralar)

şeklinde iki adet parametresi vardır. İkinci parametre zorunlu değildir yani ihtiyaca göre kullanılır. O halde gelin bunu tek parametre ve çift parametre gönderip kullanalım. 

Öncelikle id numarasına göre artan olarak ayarlayalım. Bu ve diğer örnekler için Laravel Query Builder İşlemi -1- konusundaki oluşturduğumuz tabloyu kullanalım ve ek bir controller dosyası vs oluşturmadan routes/web.php dosyası içerisinde hızlıca gerçekleştirelim. Hemen gelelim dosyamıza ve

<?php

Route::get('/', function () {
    $kayitlar = \Illuminate\Support\Facades\DB::table("cars")->orderBy("id")->get();
    foreach ($kayitlar as $kayit){
        echo $kayit->id." ".$kayit->brand." ".$kayit->model."<br>";
    }
});

şeklinde kodlarımızı yazalım. Komutlardan anlamışsınızdır id kolonunu sıralama işlemi yapmasını söyledik. Sonrasında da terminal ekranımızdan

php artisan serve

komutumuzu yazalım. Ekran çıktımıza baktığımızda ise karşımıza

1 Volvo s40
2 Volvo s60
3 Mercedes cla200
4 Mercedes benz
5 Renault talisman
6 Renault clio

şeklinde kayıtlarımız listelenecektir. Gördüğünüz üzere id kolonunu baz alarak ve default olarak asc yani artan bir biçimde sıralama işlemini gerçekleştirdi.

Şimdi ise gelelim bu sefer de model kolonuna göre desc olarak yani alfabeye göre azalan şekilde listelem işlemini yapalım. Kodlama kısmımıza gelip bu sefer

<?php

Route::get('/', function () {

    $kayitlar = \Illuminate\Support\Facades\DB::table("cars")->orderBy("model","desc")->get();
    foreach ($kayitlar as $kayit){
        echo $kayit->id." ".$kayit->brand." ".$kayit->model."<br>";
    }
});

şeklinde bir düzeltme yapalım. Kodlara bakacak olursak orderBy fonksiyonu içerisine birinci parametre olarak model kolonunu attık, diğer parametre olarak da bunların sıralanma şeklini belirttik yani desc olarak ayarlamak istedik. Daha sonra browser a gelip sayfayı yenilediğimizde ekranımıza

5 Renault talisman
2 Volvo s60
1 Volvo s40
6 Renault clio
3 Mercedes cla200
4 Mercedes benz

şeklinde bir yazı çıkacaktır. Bütün işlemlerimiz bu kadar dostlar. Olay tamamen basit. Hiç zor bir yanı yok :)

2-) PLUCK KULLANIMI

Geldik Query Builder konumuzun bir diğer başlığı olan pluck kullanımına. İsmini ilk duyan dostlarım olabilir seziyorum ben de ilk duyduğumda biraz garipsemiştim. Pluck kullanımına bakacak olursak bizim sql tablosunda belirttiğimiz kolona ait değerlerin gelme işlemini sağlıyor. 2 adet parametre alıyor. Bu parametrelere gelin bir göz atalım

  1. Parametre: Kolon Adı (zorunlu)
  2. Parametre: Kolon Adı (zorunsuz) (İlk parametreden gelen değerlerin sahip olduğu key değeri biçiminde ayarlama yapar)

şeklindedir. Gelin öncelikle brand kolonunu pluck kullanarak bir ekrana yazdıralım. Hemen kodlama kısmını açalım ve

<?php

Route::get('/', function () {
    $cars = \Illuminate\Support\Facades\DB::table('cars')->pluck("brand");
    foreach ($cars as $car){
        echo $car."<br>";
    }
});

şeklinde kodlarımızı yazdık. Fark ettiğiniz üzere brand kolonunun içerdiği değerleri ekrana bastırmak istedik. Hemen browser kısmımıza gelip baktığımızda ise

Volvo
Volvo
Mercedes
Mercedes
Renault
Renault

şeklinde değerlerimizin rahatlıkla ekrana basıldığını göreceğiz. Bu kısma kadar tamam sorun yok umarım. Gelelim bu sefer de çift parametre göndererek kullanalım. Hemen kodlama kısmımıza gelip

<?php

Route::get('/', function () {
    $cars = \Illuminate\Support\Facades\DB::table('cars')->pluck("brand", "model");
    foreach ($cars as $key => $value){
        echo "Anahtar: ".$key." -- Değer: ".$value."<br>";
    }
});

şeklinde kodlarımızı yazdık. Model kolonundan gelecek verileri bir dizinin anahtarı niteliğinde, brand kolonundan gelecek verileri de bu anahtar ın sahip olduğu değer şeklinde ekrana bastıracaktır. Hemen browser a gelip F5 attığımıda ekranımıza gelecek olan çıktı

Anahtar: s40 -- Değer: Volvo
Anahtar: s60 -- Değer: Volvo
Anahtar: cla200 -- Değer: Mercedes
Anahtar: benz -- Değer: Mercedes
Anahtar: talisman -- Değer: Renault
Anahtar: clio -- Değer: Renault

şeklinde olacaktır. Bütün işlemler işte bu kadar basit dostlarım. Hiçbir zor yanı yok. Gelelim bir sonraki ve konumuzun son Query Builder işlemine.

3-) CHUNK KULLANIMI

Pluck kullanımı sonrasında bu kullanımı da garipsediğinize şahit oluyorum ve taa buralardan seziyorum dostlarım. Şimdi içinizden geçen soru aynen şu şekilde

Hocam chunk kullanımındaki genel amaç nedir ? Pluck işlemindeki gibi aynı işleme benzer mi ?

Öğrenme adına sizlerin zihninde oluşan bu sorulara şahit olmak cidden güzel bir his dostlarım. Öncelikle sorularınızı cevaplamam gerekirse bu chunk methodunun pluck işlemine benzer bir yanı yok diyebilirim. Genel amacı veri tabanından çekilen verilerin gruplaranarak ekrana bastırılması gerektiği zamanlarda kullanılır. İçerisine adet parametre alır. Bu parametrelere göz atacak olursak

  1. Parametre: Veriler Kaçarlı Listelenecek (Zorunlu)
  2. Parametre: Callback Fonksiyon (Zorunlu)

şeklindedir. Yalnız parametreler haricinde kullanmamızın zorunlu olduğu bir şey ise orderBy() methodudur yani chunk() methodunu kullanacağımız zaman bizden verilerimizin öncelikle orderBy() methodu ile sıralamasının ayarlanması daha sonra da gruplandırma işlemini öyle yapması gerektiğini en baştan bize belirtiyor. Hemen kodlama kısmımıza gelip bunun kodlarını yazalım

<?php

Route::get('/', function () {
    \Illuminate\Support\Facades\DB::table("cars")->orderBy("id")->chunk(3,function ($cars){
        echo "<br>";
        foreach ($cars as $c){
            echo $c->brand." ".$c->model."<br>";
        }
    });
});

şeklinde kodlarımızı yazdık. Dikkat ettiyseniz id kolonunu gönderdik ve 2. parametreyi göndermedik çünkü o default olarak asc olarak algılıyordu. Sonrasında ise chunk methodunu yazıp verilerimizin üçerli üçerli gruplandırılmasını söyledik. Gelen verilerimizi foreach ile dönüp ekranımıza basmak istedik. Browser kısmına gelip sayfayı yenilediğimizde ekranımıza gelecek olan çıktı

Volvo s40
Volvo s60
Mercedes cla200

Mercedes benz
Renault talisman
Renault clio

şeklinde olacaktır dostlarım. Gördüğünüz üzere verileri öncelikle id numarasına göre asc yani artan bir biçimde sıraladı, sonrasında ise bunları üçerli üçerli gruplayıp ekranımıza bastırdı. Bütün ollay bu dostlarım hiçbir zor tarafı yok :)

 

Eveeeet dostlarım 😊. Bu yazımda sizlere Laravel frameworkü üzerinde Query Builder işlemlerindeki kullanımlardan orderBy(), pluck() ve chunk() methodlarının genel amacından ve kullanımından elimden geldiğince dilim döndüğünce bahsettim. Umarım faydalı olmuşumdur. Eksik veya hatalı bir anlatım yapmış isem benimle iletişime geçmekten çekinmeyin. Konu başlarda biraz karmaşık veya zor gelebilir dostlarım anlıyorum. Öğrenme süreci içerisinde bu durumlarla hemen hemen hepimiz sıklıkla karşılaşıyoruz. Bu durumda yapmanız gereken şey her yazımda da dediğim gibi "İstikrarlı ve Azimli Olmalısınız, Bolca Pratik Yapmalısınız". Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır :)

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ıNode.js Express Kullanımı
Sonraki YazıCodeIgniter Klasör Yapısı
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz