Laravel Query Builder İşlemi -3-

Laravel Query Builder İşlemi -3-

Hepinize merhaba dostlarım 😊. Bu yazımda sizlere artık bir seri haline getirmiş olduğum Laravel Query Builder işlemlerinin 3. kısmından bahsedeceğim. Daha önceki yazılarımı okumadıysanız linkleri aşağıday bırakıyorum

  1. Laravel Query Builder -1- Makalesi:  burada
  2. Laravel Query Builder -2- Makalesi:  burada

şeklinde linklerimi bıraktım. Hatırlamayan veya konu hakkında kendisini pekiştirmek isteyen dostlarım bu linklerden ulaşabilir

Şimdiii gelelim asıl konumuza dostlarım. Hatırlarsanız Laravel Query Builder konularında her seferinde bilgimizin üzerine bir yeni şeyler ekliyoruz. Şimdiki konumuzda ise özellikle muhasebe uygulamaları olsun, hesap yapacağımız uygulamalar olsun vs işlemlerde sık kullanılan MySQL komutlarının (select, sum, avg, max, min vs) Laravel Query Builder üzerinde nasıl kullanıldığından bahsedeceğim. Öncelikle ben konuya geçmeden önce daha önceki Laravel Query Builder yazılarında kullanmış olduğumuz laravel_egitim isimli veri tabanımıza personals isimli bir tablo ekledim. Daha sonra içerisine

şeklinde kayıtları oluşturdum. Bu makalede bu veriler üzerinde çalışacağım. Sizler de buna benzer biir tablo oluşturup üzerinde çalışabilirsiniz. Tablomuzu oluşturduğumuza göre artık sözü daha fazla uzatmayalım ve hemen başlıklarımıza geçelim :)

COUNT KULLANIMI

Gelelim Laravel Query Builder -3- konumuzun ilk başlığına. İsminden hemen anlaşılan bu komutumuzu incelediğimizde bize MySQL üzerinde belirttiğimiz tablomuzdaki toplam kayıt sayısını verecektir. Şimdi aklınızda bir soru var 

Hocam bu komutu nasıl kullanacağız ?

öğrenme çatısı altında bu şekildeki güzel soruların gelmesi cidden mutlu ediyor insanı dostlarım. Hemen gelin sizlere göstereyim.

Öncelikle göstermeden önce örnekteki bütün işlemler için routes/web.php dosyası içerisinde "/" yani ana istek çalıştığında çalışacak olan route komutunun altında yapacağız işlemlerimizi. Harici olarak bir controller açmaya gerek yok. Bu kısım anlaşıldığına göre routes/web.php dosyamıza gelip

<?php

Route::get('/', function () {
    $count = \Illuminate\Support\Facades\DB::table('personals')->count();
    echo $count;
});

şeklinde kodlarımızı yazdığımızda ve sonrasında 

php artisan serve

deyip local sunucumuzu başlattığımızda karşımıza gelecek olan çıktı

4

şeklinde olacaktır. Yani buradan MySQL veri tabanımızdaki personals tablomuzdaki kayıt sayısını raht bir biçimde görmüş olduk. Bu kısım anlaşıldıysa dostlarım gelelim bir diğer başlığımıza

MAX KULLANIMI

Max komutunun genel amacını da artık isminden hemen hızlıca anlamışsınızdır. En büyük değere sahip olan kolonun getirilmesinde önemli rol oynar. Özellikle bir yarışma scripti vs kodluyorsanız bu komut sizin için çok yararlı olacaktır. Pekii bu kadar tanımı yaptık bunu Laravel Query Builder işleminde nasıl gerçekleştireceğiz diye merak ediyorsanız öncelikle size şunu demek isterim "O Kadar Basit Ki :)...". O halde sözü daha fazla uzatmadan hemen kodlama kısmına geçelim

<?php

Route::get('/', function () {
    $max = \Illuminate\Support\Facades\DB::table('personals')->max('maas');
    echo $max." ₺";
});

şeklinde komutlarımızı yazarak maas kolonundaki en büyük veriyi getirmesini istedik. Local sunucumuz hali hazırda çalışıyor. Sayfamızı yenilediğimizde ekranımıza çıkan çıktıya baktığımızda 

9000 ₺

olarak bir çıktı geldiğini yani maas kolonundaki en büyük veriyi rahatça çektiğimizi görüyoruz.

MIN KULLANIMI

Bu komut ise dostlarım uzun uzun anlatmaya gerek kalmadan mantığını anlatmamız gerekirse max komutunun tam tersi işlemini gerçekleştirir. Yani kolondaki en küçük veriyi bulur ve ekranımıza getirir. Zaten isminden de anlaşılmıştır :). O halde sözü daha fazla uzatmadan hemen kodlama kısmını açalım ve

<?php

Route::get('/', function () {
    $min = \Illuminate\Support\Facades\DB::table('personals')->min('maas');
    echo $min." ₺";
});

şeklinde kodlarımızı yazıp daha sonrasında ise browser sayfamızı yenilediğimizde karşımıza

5000 ₺

şeklinde bir çıktı bastırılacaktır ve buradan da MySQL üzerindeki maas kolonundaki en düşük veri çekilip ekranımıza bastırıldığını rahat bir şekilde göreceğiz :)

SUM KULLANIMI

Gelelim işin dozunu biraz biraz artırmaya. Her zaman max min gibi komutlarla uğraşmayacağız bunu siz de biliyorsunuz. Yeri gelecek o kolondaki verilerin toplamı bize lazım olacak. Örnek vermemiz gerekirse satışlarınızı listelediğiniz bir tablonuz olsun varsayalım ve yıllık cironuzu hesaplayacağınızda bunları tek bir sorgu ile hesaplayacağınızda size sum komutu yardım edecektir. Biz bu örneğimizde personals tablomuzdaki personellerimizin toplam maaşını hesaplatalım. O halde hemen kodlama kısmına gelip

<?php

Route::get('/', function () {
    $sum = \Illuminate\Support\Facades\DB::table('personals')->sum('maas');
    echo $sum." ₺";
});

şeklinde kodlarımızı yazdığımızda ve browser sayfamızı yenilediğimizde karşımıza gelecek olan çıktı

29000 ₺

şeklinde olacaktır. İşte gördüğünüz gibi tek bir komut ile maas kolonundaki verilerin hepsinin toplama işlemini hızlı bir şekilde gerçekleştirdik

AVG KULLANIMI

Bazı durumlar gelecek ve bizim ortalama sonucu bulmamız gerekecek. Önceki kayıtlara baktığımızda bütün verilerin toplamını çekip daha sonra da bu verilerin toplam adedini çekip en sonunda bölme işlemi yaptırıp ortalama bulmak ne kadar saçma olur değil mi ?

İşlemleri uzun uzun yapmak yani 2-3 adımda yapmak yerine bizim için yardıma koşan avg komutunu kullanıp yaptığımız zaman bu kadar uzun uzun bir işleme hiç ama hiç gerek duymayız. Tek bir komutla ortalama sonucu ekranımıza bastırabiliriz. Bunun için hemen kodlama kısmımıza geçelim ve

<?php

Route::get('/', function () {
    $avg = \Illuminate\Support\Facades\DB::table('personals')->avg('maas');
    echo $avg." ₺";
});

şeklinde kodlarımızı yazdık. Burada koddan temel istekte bulunduğumuz şey: "maas kolonundaki verilerin ortalamasını bize döndür" şeklindedir. Bu komutumuz çalıştığında ise ekranımıza bastırılacak olan sonuç

7250 ₺

şeklinde olacaktır. Zor bir yanı yok tek bir komutla işlemlerimizi hızlı hızlı hallediyoruz :).

EXISTS KULLANIMI

Geldik bir diğer komutumuz olan exists komutumuza. Normalde programlama yaparken özellikle dosya yapılarıyla çalışıyorsanız karşımıza genelde sıklıkla gelen bir şeydir bu :). Pekiii bu komutun bizim Query Builder ile ne alakası var diyorsanız dostlarım hemen anlatayım sizlere. Örneğin MySQL üzerinde veri ekleme işlemi yapmadan önce ekleyeceğiniz veriye ait veri var mı yok mu bunu kontrol ettirmek istiyorsunuz varsayalım. İşte bu durumda uzun uzun count ile işlem yaptırmak ve gelen sonuçları saymak yerine exists komutunu kullanarak o veri daha önceden MySQL tablosunda kayıtlı mı değil mi bunu kontrolünü rahatlıkla yapabilirsiniz. Sonuç çıktısı eğer doğruysa yani o kayıttan varsa bize 1 (true), o kayıttan yok ise boş (false) döndürecektir. Şimdi genel mantığı anladığımıza göre hemen kodlama kısmımıza gelip

<?php

Route::get('/', function () {
    $exists = \Illuminate\Support\Facades\DB::table('personals')->where('name', '=', 'Zafer')->exists();
    echo $exists;
});

şeklinde bir sorgu oluşturalım. Sorgumuzda dikkat etmişseniz ismi Zafer olan kullanıcı var mı bunu kontrol ettirmek istedik. Daha sonrasında local sunucumuzu yenilediğimizde ekranımıza baktığımızda bize geri dönen sonuç

1

şeklinde olacaktır yani bize diyor ki "İsmi Zafer Olan Kullanıcı Sistemde Mevcut :)". İşte bu kadar dostlarım. Gelelim bir diğer komutumuza

DOESNTEXISTS KULLANIMI

Bu komuta bakacak olursak dostlarım uzun uzun bir anlatım yapmaktan ziyade işin genel mantığından bahsetmek istiyorum. Mantık tamamen exists komutuyla aynı. Lakin tek bir fark var. Bu fark ise bizim belirttiğimiz şartın veri tabanında varlığını değil de yokluğunu kontrol eder. Bu kısma kadar tamam isek dostlarım gelelim kodlama kısmımıza.

<?php

Route::get('/', function () {
    $doesntExist = \Illuminate\Support\Facades\DB::table('personals')->where('name', '=', 'Emrullah')->doesntExist();
    echo $doesntExist;
});

şeklinde sorgumuzu yazdık dostlarım. Local sunucumuzu çalıştırdığımızda karşımıza gelecek olan sonuç


şeklinde olacaktır. Yani bize boş bir sayfa (false) dönecektir. MySQL tablomuza baktığımızda ise "Emrullah" isimli bir kaydın olduğunu ve bu kaydın tabloda yok olarak değil de var olarak algılandığı bize belirtilmiş oldu

SELECT KULLANIMI

Geldik makalemizin son başlığı olan select kullanımına. Normalde biz sql cümlesi yazarken

SELECT * FROM personals

yerine bazen ifadesi yerine kolonlarımızın ismini yazıyorduk yani

SELECT name,surname,maas FROM personals

şeklinde. Bu işlemin aynısını Laravel üzerinde bize sunulan Query Builder üzerindeki select methodu aynı işlemi rahatlıkla gerçekleştiriyor. Gelin sizinle beraber örnek olarak personals tablosundaki name ve surname kısımlarını çekip ekrana bastıralım

<?php

Route::get('/', function () {
    $select = \Illuminate\Support\Facades\DB::table('personals')->select("name","surname")->get();
    foreach ($select as $s) {
        echo $s->name . " " . $s->surname . "<br>";
    }
});

 şeklinde kodlarımızı yazdık. Daha sonrasında ise dostlarım local sunucumuzu başlattığımızda ekranımıza gelecek olan sonuç

Zafer YILDIZ
Emrullah TANIMA
Muhammed Fatih BAĞCIVAN
Aylin DURAN

şeklinde olacaktır. Gördüğünüz gibi hiçbir zor yanı yok tamamen her şey pratik bir şekilde ekranımıza getirildi :)

 

Eveeeeet dostlarım 😊. Bu yazımda sizlere Laravel Quer Builder işlemlerinin 3. bölümünü elimden geldiğince dilim döndüğünce anlatmaya çalıştım. 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 gelmiş olabilir dostlarım anlıyorum. Özellikle öğrenme süreci içerisindeyseniz bu durumla sıklıkla karşılaşaşcaksınız. Benim sizlerdeb bu süreç içerisinde istediğim tek şey: "İ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 Statik Dosyaları Kullanma
Sonraki YazıCodeIgniter View Yükleme
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz