2015-11-12 15 views
10

Tüm yapmaya çalıştığım bir sorguyu doğrulamaktır. ": Tablo mevcut değil hatası" veya genel bir hata Bu olmadanBaşarısız olup olmadığını görmek için laravel'deki bir sorgu istisnasını nasıl yakalarım?

'SELECT * from table_that_does_not_exist' 

dışarı erroring, ben bu yüzden bildiren bir yanıtı döndürebilir başarısız bilmek istiyorum.

+0

size sorguları için 'Eloquent' kullanıyorsanız, bir' DB :: ham() 'sorguyu()' 'firstOrFail kullanabilirsiniz. Ya da bir "try {} catch (Illuminate \ Database \ QueryException $ ex) {}' –

+0

Denemeyi denedim ancak yine de hatayı gösterir. Örneğin: { $ results = DB :: connection ('myDB') deneyin -> select ('BAD TEXT QUERY FAIZ HATASI'); } yakalamak (Illuminate \ Database \ QueryException $ e) { // Hiçbir şey yapmayın} – KingKongFrog

+1

'deneyin {$ results = \ DB :: connection (" example ") -> select (\ DB :: raw ("SELECT * FROM unknown_table")) -> ilk(); } yakalamak (\ Illuminate \ Database \ QueryException $ ex) {die ("Bir hata yakala"); } 'Atar ve' ölür '' Bir hata yakaladı. Aydınlatmadan önce \ olan var mı? İlk yorumumda bunu unuttuğumu fark ettim. Ayrıca, 'ex exdes' 'Exception' sınıfını genişletirsiniz, böylece tam hatasını döndürmek için '$ ex-> getMessage()' diyebilirsiniz. –

cevap

24

herhangi sql sözdizimi veya sorgu hatalarını yakalamak için basit yolu sorgunuzla kapanmasını sağladıktan sonra bir Illuminate\Database\QueryException yakalamak: Herhangi bir hata varsa

try { 
    $results = \DB::connection("example") 
    ->select(\DB::raw("SELECT * FROM unknown_table")) 
    ->first(); 
    // Closures include ->first(), ->get(), ->pluck(), etc. 
} catch(\Illuminate\Database\QueryException $ex){ 
    dd($ex->getMessage()); 
    // Note any method of class PDOException can be called on $ex. 
} 

, program die(var_dump(...)) o ihtiyacı neyse.

Not: Ad alanı oluşturmak için, sınıf use eki olarak eklenmediyse ilk \ gerekir. referans için de

: Laravel 5.1 API - Query Exception

İlgili konular