Laravel Raw Query Nedir ?

Raw query laravelin bize hazır olarak verdiği sorgu metotları haricinde kendimizin manuel olarak sql sorguları yazmamız için geliştirilmiş bir fonksiyondur.

Temel bir sql sorgu cümlesi oluşturmak için DB sınıfının raw metodunu kullanabiliriz.

$users = DB::table('users')
             ->select(DB::raw('count(*) as user_count, durum'))
             ->where('durum', '<>', 1)
             ->groupBy('status')
             ->get();

Yalnız burada dikkat etmemiz gereken bir husus var. Ham sql ifadeleri sorguya dizeler olarak enjekte edilecektir, bu nedenle SQL enjeksiyon güvenlik açıkları oluşturmamak için son derece dikkatli olmalısınız. Yani güvenli sql kodları yazmazsanız dışarıdan gelecek tehlikelere karşı koruma sağlayamazsınız.

Laravel Raw Metotları

DB::raw kullanmak yerine, sorgumuzun çeşitli yerlerine raw metotlarını eklemek için aşağıdaki yöntemleri kullanabiliriz.

Unutmayın, Laravel, içerisinde kullanolan herhangi bir sql sorgusunun SQL enjeksiyon güvenlik açıklarına karşı korunacağını garanti edilmez.

Laravel selectRaw Kullanımı

SelectRaw yöntemi, addSelect(DB::raw(…)) yerine kullanılabilir. Bu yöntem, ikinci argümanı olarak isteğe bağlı bir dizi kabul eder. Eğer parametre kullanacaksanız ikinci parametreyi girmek zorundasınız.

$orders = DB::table('orders')
                ->selectRaw('price * ? as kdv', [18])
                ->get();

Laravel whereRaw , orWhereRaw Kullanımı

Bu metotlar ise sql sorgumuza where ifadeleri eklemek için kullanılır. Eğer parametreli bir sorgu yazıyorsanız 2. parametre olarak bir dizi içerisinde sırasıyla değerleri girmeniz gereklidir.

$users = User::whereRaw('yas > ? and maas= 5000', array(25))->get();

orWhere:

$camps = $field->camps()->where('status', 0)->where(function ($q) {
    $q->where('cinsiyet', Auth::user()->cinsiyer)->orWhere('cinsiyet', 0);
})->get();

Laravel havingRaw , orHavingRaw Kullanımı

Having yapısı temel olarak where yapısı ile aynı işlemi yapmaktadır. Tek farı having ifadesi group by ile kullanılmak zorundadır. Laravelde having sql kodu yazmak için havingRaw be orHavingraw metotları kullanılır.

$orders = DB::table('orders')
                ->select('department', DB::raw('SUM(price) as total_sales'))
                ->groupBy('department')
                ->havingRaw('SUM(price) > ?', [2500])
                ->get();

Laravel OrderByRaw Kullanımı

Order By işlemi çektiğimiz verileri belli bir kurala göre sıralamamızı sağlar. Laravelde sql sorgusu şeklinde bu işlemi yapmak için orderByRaw metodunu kullanırız. DESC büyükten küçüğe, ASC ise küçükten büyüğe sıralamak için kullanılır.

$orders = DB::table('users')
                ->orderByRaw('age DESC')
                ->get();

Laravel GroupByRaw Kullanımı

groupByRaw metodu group by sql cümlesi yazmak için kullanılır. Temel kullanımı şu şekildedir.

$orders = DB::table('users')
                ->select('name', 'surname','city')
                ->groupByRaw('city,')
                ->get();

 

Shares:

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir