Laravel Query Builder İşlemi -1-

Laravel Query Builder İşlemi -1-

Hepinize merhaba dostlarım 😊. Bu yazımda sizlerle beraber laravel üzerinde Query Builder konusuna giriş yapacağız. 

Şimdi aklınızı kucalayan bir soru vardır "Query Builder Nedir Acaba ?" diye. Teorik anlatımdan çok mantıksal bir açıklama yapmayı sevdiğimi biliyorsunuz ve ben bunun da teorik anlatımını yapmak yerine amacını anlatmak istiyorum. Query Builder bizim laravel uygulamamızda veri tabanı işlemleri yapmamızda yardımcı olan bir işlemdir. Örneğin veri ekleme, listeleme, güncelleme ve silme işlemleri olsun, tabloları join etme işlemleri olsun bu yöntem kullanılır. İşin amacı tamamen budur dostlar karmaşık bir yanı yoktur ve kullanımı da gayet pratiktir. Bu konumuzdaki örneklerimizi ek bir controller açmadan routes/web.php üzerinden göstermek istiyorum. O zaman neden vakit kaybediyoruz hemen kodlamaya geçelim :)

TÜM KAYITLARI LİSTELEME

Eveeet artık geldik konumuzun ilk başlığı olan verileri listeleme kısmına. Daha önceki konumuzda veri tabanına bağlanma işleminden bahsetmiştim ve bir de veri tabanı oluşturmuştuk (yazıyı okumayan dostlarım varsa buradan ulaşabilir). O veri tabanına da laravel_egitim ismini vermiştik. Onun içerisine şimdi örnek olarak cars isimli bir tablo açalım. O tablonun yapısı

kolon ismi tip
id int(11) auto_increment primary key
brand varchar(255)
model varchar(255)
year int(11)

şeklinde bir yapısı olsun. Daha sonra içerisine kayıt ekleyelim rastgele. Ben aşağıdaki gibi kayıtlar oluşturdum

id brand model year
1 Volvo s40 2018
2 Volvo s60 2020
3 Mercedes cla200 2017
4 Mercedes benz 2014
5 Renault talisman 2017
6 Renault clio 2018

daha sonra yukarıda da dediğim gibi routes/web.php kısmını açalım ve aşağıdaki şekildeki gibi kodu yazalım

<?php

Route::get('/', function () {
    $cars = \Illuminate\Support\Facades\DB::table("cars")->get();    // cars tablosuna git ve bütün verileri getir
    foreach ($cars as $c) {            
    	echo "Marka: ".$c->brand." Model: ".$c->model." Yıl: ".$c->year."<br>";   // verilerin hepsini teker teker dön ve ekrana bastır
    }
});

şeklinde kodlarımızı yazalım. Burada dikkat ettiğimiz üzere bir Query Builder kullandık ve bu kütüphanemizi \Illuminate\Support\Facades\DB altından çağırdık. Peki burada işlem nasıl gerçekleşti gelin ona bir bakalım

  1. Kütüphanemizi çağırdık
  2. table() komutu ile hangi tablo ile çalışacağımızı belirttik
  3. get() komutu ile bütün verileri çekeceğimizi söyledik

şeklinde kodlarımızı yazdık. Daha sonra ise bu gelen verilerimiz birden çok olacağı için bir foreach döngüsü oluşturduk ve ekrana yazdırmak istedik. Local sunucumuzu 

php artisan serve

diyerek başlattığımızda ise ekranımıza gelecek olan çıktı

Marka: Volvo Model: s40 Yıl: 2018
Marka: Volvo Model: s60 Yıl: 2020
Marka: Mercedes Model: cla200 Yıl: 2017
Marka: Mercedes Model: benz Yıl: 2014
Marka: Renault Model: talisman Yıl: 2017
Marka: Renault Model: clio Yıl: 2018

şeklinde olacaktır. İşte gördüğünüz gibi gayet basit ve hızlı bir şekilde ekranımıza bastırdık. Şimdi gelelim diğer bir başlığımıza

VERİLERİ LİSTELEME (WHERE ŞARTI İLE)

Artık yavaştan yavaştan işlemleri birazcık zorlaştırıyoruz ki öğrenmenin tadı olsun değil mi :). Şimdi konumuza bakacak olursak bizim sql cümleleri içerisinde where şartı kullanacağımız durumlar olabiliyordu mesela sadece şu kayıtları çek veya şu kayıtlar haricini çek gibisinden. İşte bu aşamada Query Builder kullanırken where şartını da kullanıyoruz. Where şartı 3 adet parametre alıyor. Bunlar nedir diye bakacak olursak:

  1. Kolon Adı (zorunlu)
  2. Şart Operatörü (zorunlu) (= , > , < , != vs vs.)
  3. Olmasını veya olmamasını istediğimiz değer (zorunlu)

şeklinde parametreler alır. Şimdi yukarıda yani tüm kayıtları listeleme örneğindeki kodlarımızı az değiştirelim ve modeli 2017 ve 2017 den büyük olanları ekrana getirelim. Siz hemen sorguyu yazdınız beni bekliyorsunuz seziyorum. Tebrik ediyorum sizi :). Ben de sözümü daha fazla uzatmadan hemen kodu yazayım

<?php

Route::get('/', function () {
	$cars = \Illuminate\Support\Facades\DB::table("cars")->where("year",">=",2017)->get();   // yılı 2017 ve 2017 den büyük olan kayıtları getir
	foreach ($cars as $c) {
		echo "Marka: ".$c->brand." Model: ".$c->model." Yıl: ".$c->year."<br>";   // kayıtları ekrana bas
	} 
});

şeklinde kodlarımızı yazdık. Burada süreç nasıl işledi ona bakalım

  1. Kütüphanemizi çağırdık
  2. table() komutu ile hangi tablo ile çalışacağımızı belirttik
  3. where() komutu ile şartımızı belirttik
  4. get() komutu ile verileri getir dedik

şeklinde kodlarımızı yazdık. Daha sonra local sunucumuzu başlattığımızda ise ekranımıza

Marka: Volvo Model: s40 Yıl: 2018
Marka: Volvo Model: s60 Yıl: 2020
Marka: Mercedes Model: cla200 Yıl: 2017
Marka: Renault Model: talisman Yıl: 2017
Marka: Renault Model: clio Yıl: 2018

şeklinde çıktımızı verdi. Dikkat ettiyseniz önceki verilerin arasında 2014 model de vardı ama burada yok :). Bütün işlemler bu kadar. Gelelim bir diğer başlığımıza

TEK SATIR VERİ ÇEKME

Bazen projemizde yeri geliyor ki tek satır veri çekme durumlarıyla karşılaşabiliyoruz. Bu kısma örnek vermemiz gerekirse sitenin genel ayar tablosu olsun varsayalım. Buradaki adres bilgileri vs olsun tek satır olduğu için ve bunu bir dizi gibi kullanmamamız için first() komutu ile çağırmamız gerekmektedir. O halde sözü daha fazla uzatmadan hemen kodlamamıza geçiş yapalım

<?php

Route::get('/', function () {
	$cars = \Illuminate\Support\Facades\DB::table("cars")->first();    // Tüm kayıtları çek ve sadece en baştaki veriyi al
        echo "Marka: ".$cars->brand." Model: ".$cars->model." Yıl: ".$cars->year."<br>";   // kaydı ekrana bas
});

şeklinde komut yazdık. Buradaki işleyen sürece bakacak olursak

  1. Kütüphanemizi çağırdık
  2. table() komutu ile hangi tabloyla çalışacağımızı belirttik
  3. first() komutu ile sql üzerindeki kayıtlarımızdan ilk kaydımızı aldık
  4. Daha sonra echo komutu ile ekranımıza yazdırdık

şeklinde bir süreç işledi. Local sunucumuzu başlattığımızda ise karşımıza gelecek olan sonuç

Marka: Volvo Model: s40 Yıl: 2018

şeklinde olacaktır. İşlem bu kadar basit dostlarım. Tek bir kaydınız varsa tablonuzda bu şekilde veriyi bu şekilde çekebilirsiniz. İşlem bu kadar basit. Gelelim bir diğer başlığımıza

TEK SATIR VERİ ÇEKME (WHERE ŞARTI İLE)

Tek satır veri çekmenin diğer bir kulllanımı ise where şartı ile kullanımıdır. Mesela 2017 yılına ait araçlar gelsin ama bu 2017 yılına ait araçlardan listenin en başındaki araç gelsin isteyelim. Bunu yapmak inanın çok basit dostlarım. Hemen kodumuzu açalım ve

<?php

Route::get('/', function () {
	   $cars = \Illuminate\Support\Facades\DB::table("cars")->where("year","=",2017)->first();  // yıl 2017 olan araçları çekelim 
	   echo "Marka: ".$cars->brand." Model: ".$cars->model." Yıl: ".$cars->year."<br>";   // kaydı ekrana bas
});

şeklinde kodlarımızı yazalım. Burada işleyen sürece bakacak olursak

  1. Kütüphanemizi Çağırdık
  2. where() komutu ile 2017 ye ait araçların gelmesi şartını koyduk
  3. first() ile bu listelenecek kayıtlardan en baştakini al dedik
  4. echo ile ekrana yazdırmak istedik

şeklinde bir süreç oluştu. Bunun ekrana basılmasını da ayarladık ve ekrananımıza

Marka: Mercedes Model: cla200 Yıl: 2017

şeklinde değer gelmiş oldu. İşlem bu kadar basit çok zor bir yanı yok :). Gelelim bir diğer ve son başlığımıza

BELİRTİLEN ID'ye AİT KAYDI GETİRME

Geldik artık belirttiğimiz ıd numarasına özel kaydımızı getirme işlemine. Özellikle güncelleme sayfasına verilerimizin aktarılacağı durumda kullanılan bu işlemde find() komutunu kullanıyoruz. Find komutu içerisine bir adet zorunlu parametre alıyor. Bu parametre ise

  1. ID Değeri (zorunlu)

şeklindedir. Bunu belirtmemiz gerekir :). Bu kısma kadar tamam isek gelelim kodlama kısmımıza

<?php

Route::get('/', function () {
	  $cars = \Illuminate\Support\Facades\DB::table('cars')->find(4);  // id numarası 4 olan kaydı getir dedik
	  echo "Marka: ".$cars->brand." Model: ".$cars->model." Yıl: ".$cars->year."<br>";   // kaydı ekrana bastırdık
});

şeklinde kodumuzu yazdık. Burada işleyen sürece bakacak olursak

  1. Kütüphanemizi çağırdık
  2. table() komutu ile hangi tablomuzla çalışacağımızı söyledik
  3. find() komutu ile hangi id numarasına ait kaydın getirileceğini söyledik
  4. echo komutu ile ekrana çıktıyı bastırdık

şeklinde süreç işledi. Local sunucumuzu çalıştırdığımızda ise ekranımıza

Marka: Mercedes Model: benz Yıl: 2014

şeklinde bir çıktı gelecektir. Bütün işlemlerimiz bu kadar basit.

 

Eveeet dostlarım 😊. Bu yazımda sizlere Laravel üzerinde Query Builder Nedir ?, Temel Query Builder işlemleri nelerdir bunlardan elimden geldiğince dilim döndüğünce anlatmaya çalıştım. Umarım faydalı olmuşumdur. Eksik veya hatalı bir bilgi aktarımı yapmış isem benimle iletişime geçmekten çekinmeyin. Konu başlarda biraz karmaşık veya zor gelebilir dostlarım anlıyorum öğrenme sürecinde bu durumlar olur :). Bu süreçte sizden istediğim her yazımın altında da dediğim gibi "İstikrarlı ve Azimli Olmanız, Bolca pratik Yapmanız" olacaktır. Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizin 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 MongoDB Çoklu Veri Ekleme İşlemi
Sonraki YazıCodeIgniter Nedir ?
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz