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
- Kütüphanemizi çağırdık
- table() komutu ile hangi tablo ile çalışacağımızı belirttik
- 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:
- Kolon Adı (zorunlu)
- Şart Operatörü (zorunlu) (= , > , < , != vs vs.)
- 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
- Kütüphanemizi çağırdık
- table() komutu ile hangi tablo ile çalışacağımızı belirttik
- where() komutu ile şartımızı belirttik
- 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
- Kütüphanemizi çağırdık
- table() komutu ile hangi tabloyla çalışacağımızı belirttik
- first() komutu ile sql üzerindeki kayıtlarımızdan ilk kaydımızı aldık
- 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
- Kütüphanemizi Çağırdık
- where() komutu ile 2017 ye ait araçların gelmesi şartını koyduk
- first() ile bu listelenecek kayıtlardan en baştakini al dedik
- 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
- 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
- Kütüphanemizi çağırdık
- table() komutu ile hangi tablomuzla çalışacağımızı söyledik
- find() komutu ile hangi id numarasına ait kaydın getirileceğini söyledik
- 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 :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer