Laravel’ın Query Builder veya Eloquent ile çalışırken, özellikle karmaşık sorguların hata ayıklanması sırasında, üzerinde oluşturulan SQL sorgusunu görmek isteyebilirsiniz.
Laravel, bunu yapmak için temiz ve basit bir yol sunar.
Yer Tutucularla Ayrıntılı SQL Almak
Oluşturulan SQL’i görüntülemek için toSql() yöntemini kullanabilirsiniz:
$query = User::where('email', 'like', '%gmail.com%');
dd($query->toSql());
Çıktı:
select * from `users` where `email` like ?
Bu, gerçek değerler yerine ? yer tutucuları ile sorguyu gösterir.
Sorgu Bağlamalarını Almak
Yer tutuculara bağlanan değerleri görmek için:
dd($query->getBindings());
Tam SQL Sorgusunu Almak (Sadece Hata Ayıklama için)
Gerçek değerlerle doldurulmuş SQL görmek istiyorsanız:
$sql = vsprintf(
str_replace('?', "'%s'", $query->toSql()),
$query->getBindings()
);
dd($sql);
Çıktı:
select * from `users` where `email` like '%gmail.com%'
Bu yöntem, sadece hata ayıklama veya günlükleme için kullanılmalıdır. Sorguları yürütmek için kullanılmamalıdır.
Bonus: Tüm SQL Sorgularını Günlüklemek
Laravel tarafından yürütülen her SQL sorgusunu günlüğe kaydedebilirsiniz:
DB::listen(function ($query) {
logger($query->sql, $query->bindings);
});
Kaynak: Orijinal Makale


