2015-11-12 5 views
10

Tutto quello che sto cercando di fare è verificare una query.Come posso rilevare un'eccezione di query in laravel per vedere se fallisce?

'SELECT * from table_that_does_not_exist' 

Senza che erroring fuori, mi piacerebbe sapere è riuscito in modo da poter restituire una risposta che indica "Errore: tabella non esiste" o errore generico.

+0

Se stai usando 'Eloquent' per le vostre domande, è possibile utilizzare' firstOrFail() 'su un DB :: grezzo()' 'interrogazione. O un 'try {} catch (Illuminate \ Database \ QueryException $ ex) {}' –

+0

Tuttavia, ho provato il trucco, ma mostra ancora l'errore. Ad esempio: try { $ results = DB :: connection ('myDB') -> select ('BAD TEXT QUERY DOVREBILE FAIL'); } catch (Illuminate \ Database \ QueryException $ e) { // Non fare nulla } – KingKongFrog

+1

'prova {$ risultati = \ DB :: connessione (" esempio ") -> seleziona (\ DB :: raw ("SELECT * FROM unknown_table")) -> first(); } catch (\ Illuminate \ Database \ QueryException $ ex) {die ("Preso un errore"); } 'Getta e' muore' "Catturato un errore". Hai \ prima di illuminare? Ho appena realizzato che l'avevo dimenticato nel mio primo commento. Inoltre, '$ ex' estenderebbe la classe' Exception' di base, quindi puoi chiamare '$ ex-> getMessage()' per restituire l'errore esatto. –

risposta

24

Il modo più semplice per raccogliere eventuali sql errori di sintassi o query è di prendere un Illuminate\Database\QueryException dopo aver fornito la chiusura alla tua richiesta:

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. 
} 

Se ci sono errori, il programma die(var_dump(...)) qualunque cosa è necessario.

Nota: per il namespace, è necessario prima il \ se la classe non è inclusa come istruzione use.

anche per riferimento: Laravel 5.1 API - Query Exception

Problemi correlati