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
- Parametre: Kolon Adı (zorunlu)
- 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
- Parametre: Kolon Adı (zorunlu)
- 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 2 adet parametre alır. Bu parametrelere göz atacak olursak
- Parametre: Veriler Kaçarlı Listelenecek (Zorunlu)
- 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 :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer