2013-08-24 11 views
13

Im usando Laravel 4 con MySQL e voglio sapere come controllare possibili errori quando un record viene inserito, aggiornato o cancellato nel DB. Ad esempio, se faccio un aggiornamento come segue:Come sapere se una query fallisce in Laravel 4?

DB::table('user')->where('id', $id)->update($userdata); 

Come potrei sapere se quella query fallisce? Ho pensato di usare un blocco try-catch per catturare l'eccezione e affrontarlo ma voglio sapere se esiste un metodo specifico di Laravel.

+1

Quando una query non riesce, verrà generata una PDOException. Puoi prenderlo. –

+1

@RubensMariuzzo, non proprio. Laravel [lo sovrascrive] (https://github.com/laravel/framework/blob/master/src/Illuminate/Database/Connection.php#L528) e al suo posto lancia un normale 'Exception'. – rmobis

+0

@Raphael_, hai ragione, grazie per la rettifica. –

risposta

33

inserirlo in un blocco di prova.

try { 

    DB::table('user')->where('id', $id)->update($userdata); 
}catch(\Exception $e){ 
    //Do something when query fails. 
} 

inoltre,

DB::insert() rendimenti booleano.

DB::update() rendimenti booleano

DB::delete() rendimenti booleano

DB::insertGetId() ritorno l'ultimo ID inserito.

È possibile scrivere i codici di follow-up in base al valore.

P.S. Quanto sopra non è per errori ma solo per sapere se la tua query ha interessato alcune righe o meno.

+1

Grazie! Sì, penso di usare try-catch ma vorrei essere sicuro che Laravel fornisca un metodo diretto. Se questi metodi restituiscono un valore booleano se le righe sono interessate, è sufficiente per me. – Darwing

+0

'return false' nel blocco' catch'. è così che l'ho reso booleano;) – itachi

+0

Possiamo prendere PDOException come @Rubens commentato nella domanda? – sangam