Query Builder

En basit ve hızlı haliyle özelleştirilmiş bir SQL kullanım yöntemi olarak tanımlanabilir.  Model yapısını devreden çıkartarak SQL kullanılmasını sağlar. Böylece, Controller yapısı içerisinde direk SQL kullanılabilir.

Bu yapının kullanılabilmesi için Controller’a aşağıdaki satır eklenmelidir.

use Illuminate\Support\Facades\DB;

Query Builder Methodları

Tabloya Veri Ekleme

SQL’deki Insert komutu ile yapılacak işlemleri kapsar.

DB:table(TabloAdi)->insert([sütunAdi => Değer]);
DB::table('users')->where('name', 'John')->first(); // İlk Satırı Verir
DB::table('users')->orderBy('name', 'desc')->get(); // İsme Göre ters sıralama yapar.
DB::table('users')->inRandomOrder()->get(); // Rastgele bir sıralama yapar.
DB::table('users')->groupBy('account_id')->get(); // Account ID Satırını Gruplar.
DB::table('users')->select('name')->get(); // Sadece name kolonunu çeker.
DB::table('users')->pluck('name'); // Name kolonunu dizi olarak bize verir.
DB::table('users')->count(); // Kaç kullanıcı var sayar.
DB::table('users')->avg('age') // Ortalamasını verir.
DB::table('orders')->sum('price'); // Tüm hepsini toplar.
DB::table('orders')->max('price'); // Max değeri gösterir.
DB::table('orders')->min('price'); // Min değeri gösterir.
DB::table('users')->where('id',3)->get(); // Normalde bu kısa kullanımı bunun açılımı where('id','=',3)
DB::table('users')->where('id','<',3)->get(); // Verdiğimiz Sayıdan küçükleri çeker.
DB::table('users')->where('id','>',3)->get(); // Verdiğimiz Sayıdan büyükleri çeker.
DB::table('users')->whereIn('id',[1,2,3])->get(); // Dizi içerisinde verdiğimiz değerleri çeker.
DB::table('users')->whereNotIn('id',[1,2,3])->get(); // Dizi içerisinde verdiğimiz değerleri olmayanları çeker.
DB::table('users')->whereBetween('id',[1,3])->get(); // Dizi içerisinde belirtiğimiz sayı aralığında veri çeker.
DB::table('users')->whereNotBetween('id',[1,3])->get(); // Dizi içerisinde belirtiğimiz sayı dışındaki verileri çeker.
DB::table('users')->whereNull('created_ad')->get(); // Belirttiğimiz kolondaki boş değerleri çeker.
DB::table('users')->whereNotNull('created_ad')->get(); // Belirttiğimiz kolondaki boş olmayan değerleri çeker.
DB::table('users')->where(["urun_adi","Monitör"],["seri_no",333])->get(); // Bu şekilde bir çok kolonda karşılaştırma yaparak veri çekebiliriz.
DB::table('users')->whereSerino(1)->get(); // where'in yanına ilgili kolonu CamelCase olarak yazarak ilgili kolondan değer çekebiliriz.
// İlişkiler
User::has('post')->get(); //Sadece Yazısı olan kullanıcıları getir.
User::has('post','>',3)->get(); //3'den fazla yazısı olan kullanıcıları getir.
User::withCount(['post','product'])->get(); //Kullanıcıların yazı ve ürün sayılarını getirir.
//İlişkiler sonuna () tamlamasını eklediğimizde üst kısımdaki tüm methodları kullanabiliriz.
User::find(1)->posts()->where('name','like','Kahramaner%')->get();

Tablodan Veri Çekme

SQL’deki Select komutu ile yapılacak işlemleri kapsar.

Seçilen sütundaki eşit değerlerin sorgulanmasını sağlar.

DB::table(TabloAdi)->where(sütunAdi, Değer)->get();

Seçilen sütundaki eşit olmayan değerlerin sorgulanmasını sağlar.

DB::table(TabloAdi)->where(sütunAdi, '!=',Değer)->get();

Birden fazla sütundaki değerler üzerinden sorgulanma da yapılabilir.

DB::table(TabloAdi)->where(sütunAdi, Değer)->where(sütunAdi,'LIKE', '%Değer%')->orWhere(sütunAdi,Değer)->get();

Tablodaki Veriyi Güncelleme

SQL’deki Update komutu ile yapılacak işlemleri kapsar.

Tablodan Veri Silme

SQL’deki Delete komutu ile yapılacak işlemleri kapsar.


Query Builder’ı SQL Olarak Görüntüleme

1.Yöntem toSql() ifadesi ile SQL komutu ekrana çıktı olarak görüntülenebilir.

$user = User::where('id',1)->toSql();
dd($user);

2.Yöntem: Log olarak görüntülenebilir.

        DB::enableQueryLog();  
        $user = User::where('id',1)->get();  
        $query = DB::getQueryLog();  
        dd($query);

3.Yöntem: end() komutu ile görüntülenebilir.

        DB::enableQueryLog();
        $user = User::where('id',1)->get();
        $query = end($query);
        dd($query);