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
fonte
2015-11-12 21:01:00
Se stai usando 'Eloquent' per le vostre domande, è possibile utilizzare' firstOrFail() 'su un DB :: grezzo()' 'interrogazione. O un 'try {} catch (Illuminate \ Database \ QueryException $ ex) {}' –
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
'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. –