Sitemize hoşgeldiniz!  ::  Son eklenen yazı: Git’te “master” mı “main” mi? Bir kelimenin ardındaki hikâye  ::  Toplam 63 yazı  ::  Görüş ve önerileriniz için iletişim sayfasını kullanabilirsiniz.
» Menü
Anasayfa
Hakkımda
İletişim
» Kategoriler
› nostalji (8)
› laravel (7)
› php (5)
› web (3)
› agile (3)
› go (2)
› golang (2)
› api (2)
› redis (2)
› git (2)
› github (2)
› model (1)
» Arşiv
› Ekim 2025 (2)
› Temmuz 2025 (1)
› Nisan 2025 (3)
› Mart 2025 (5)
› Şubat 2025 (1)
› Ocak 2025 (43)
› Haziran 2011 (1)
› Kasım 2009 (1)
› Temmuz 2009 (1)
› Temmuz 2007 (1)
› Ocak 2007 (1)
› Kasım 2006 (1)
› Ekim 2006 (1)
› Ağustos 2006 (1)
Anasayfa » Yazılar » Laravel Raw SQL Kullanımı
Laravel Raw SQL Kullanımı
Yazan: Atilla Mutlu | Tarih: 15.01.2025 13:52 | Kategori: rawsql

Laravel, veritabanı işlemleri için güçlü bir Query Builder ve Eloquent ORM sunar. Ancak bazı durumlarda, doğrudan SQL sorguları çalıştırmanız gerekebilir. Bu ihtiyaçlar için Laravel, Raw SQL kullanımı sağlar.


Raw SQL Avantajları ve Dezavantajları

Avantajlar:

  • Karmaşık SQL sorgularını kolayca çalıştırabilirsiniz.
  • ORM ve Query Builder'ın sağladığı soyutlamayı atlayarak doğrudan performanslı sorgular yazabilirsiniz.
  • Özellikle, optimize edilmiş SQL fonksiyonları veya işlemleri gerektiğinde kullanışlıdır.

Dezavantajlar:

  • Kodun okunabilirliği azalabilir.
  • SQL enjeksiyonu riskine karşı dikkatli olunmalıdır.
  • Eloquent'in sağladığı birçok kolaylıktan faydalanamazsınız.

Raw SQL Kullanım Yöntemleri

1. select() ile Raw SQL Çalıştırma

Laravel'in DB sınıfını kullanarak doğrudan SQL sorguları çalıştırabilirsiniz.

use Illuminate\Support\Facades\DB;

$users = DB::select('SELECT * FROM users WHERE active = ?', [1]);

foreach ($users as $user) {
    echo $user->name;
}

2. insert() ve update() ile Veri İşleme

Raw SQL ile veri eklemek veya güncellemek için insert ve update metotlarını kullanabilirsiniz.

  • Veri Ekleme:

    DB::insert('INSERT INTO users (name, email) VALUES (?, ?)', ['John Doe', 'john@example.com']);
  • Veri Güncelleme:

    DB::update('UPDATE users SET active = ? WHERE id = ?', [1, 42]);

3. delete() ile Veri Silme

Raw SQL sorgusu ile kayıtları silebilirsiniz.

DB::delete('DELETE FROM users WHERE id = ?', [42]);

4. statement() ile Herhangi Bir SQL Çalıştırma

statement metodu ile herhangi bir SQL ifadesini çalıştırabilirsiniz.

DB::statement('DROP TABLE test_table');

Raw Expressions (Ham İfadeler)

Raw ifadeler, Laravel'in Query Builder ile kullanabileceğiniz bir yöntemdir. Örneğin:

use Illuminate\Support\Facades\DB;

$users = DB::table('users')
            ->select(DB::raw('COUNT(*) as user_count, active'))
            ->groupBy('active')
            ->get();

Bu yöntemde, ham ifadeleri Query Builder ile birleştirerek daha esnek sorgular yazabilirsiniz.


SQL Enjeksiyonu ve Güvenlik

Raw SQL kullanırken SQL enjeksiyonu riskine karşı dikkatli olmalısınız. Parametre bağlama kullanarak bu riskleri en aza indirebilirsiniz.

Güvensiz sorgu:

$users = DB::select("SELECT * FROM users WHERE name = '$name'");

Güvenli sorgu:

$users = DB::select('SELECT * FROM users WHERE name = ?', [$name]);

Logging Raw SQL Queries

Laravel, çalıştırılan SQL sorgularını loglama özelliğine sahiptir. DB::listen metodu ile sorguları görüntüleyebilirsiniz.

DB::listen(function ($query) {
    echo $query->sql;
    echo implode(", ", $query->bindings);
    echo $query->time;
});

Özet

Laravel'de Raw SQL, Query Builder ve Eloquent'in ötesinde esneklik sunar. Performansın önemli olduğu veya karmaşık sorguların gerektiği durumlarda kullanabilirsiniz. Ancak, güvenlik önlemlerine dikkat etmeli ve mümkün olduğunca Query Builder veya Eloquent kullanmayı tercih etmelisiniz.

« Geri dön | Yorum gönder | Yukarı ↑
» Hakkımda
A
Atilla Mutlu
Yazılım Geliştirici

Devamını oku »
» Son Yazılar
› Git’te “master” mı “main” mi? Bir kelimenin ardındaki hikâye
› Laravel Model Controller
› PostgreSQL Mini‑Kılavuz
› ReactJS Rehberi
› Spatie Laravel Paketleri
» İstatistik
Ziyaretçi Sayısı
036371
Toplam yazı: 63
PHPpowered SQLiteinside Firefoxile daha iyi CSStables ♥
Bu site en iyi 1024x768 çözünürlükte görüntülenir.
Copyright © 2006-2026
Anasayfa | Hakkımda | İletişim | Yukarı ↑
Bu sayfa 0,011 saniyede oluşturuldu.