Tips Error Handling Sederhana Pada Query Builder Laravel

By Akbarpri    PHP

Jika kamu lebih memilh pakai Query builder di Laravel ketimbang Eloquent, saya ada dipihak kamu :D karena saya juga pakai query Builder untuk kebanyakan aktifitas Query di Aplkikasi Laravel saya. 

Nah biasanya bawaan Koding dari lahir mungkin yah :D, saat query Insert,Update,Delete mungkin ada yang masih seperti ini

public function doUpdate($data){
    $data = array(     'nama' => $data['nama'],     'alamar' => $data['alamar']    );
    //Auth::user()->id : Session logged user    $update = DB::table('user')->where('user_id',Auth::user()->id)
                                  ->update($data);    if($update)
        return Redirect::to('user/profile');     else
        //blablaa...
}

atau seperti ini

public function doUpdate($data){
    $data = array(     'nama' => $data['nama'],     'alamar' => $data['alamar']    );
    //Auth::user()->id : Session logged user    $update = DB::table('user')->where('user_id',Auth::user()->id)
                                  ->update($data);    if(!$update){

        //redirect with error
        return Redirect::to('user/profile')->with('error_update',true);    
     }
     else
       return Redirect::to('user/profile');}

Untuk Update, Delete pakai Query builder di laravel, return nya berupa Affected rows. jadi Query di atas kurang tepat dan dapat menimbulkan masalah.

Secara sederhana bisa kita handle sperti ini saja

public function doUpdate($data){
    $data = array(     'nama' => $data['nama'],     'alamar' => $data['alamar']    );
    //Auth::user()->id : Session logged user

    try{
        DB::table('user')->where('user_id',Auth::user()->id)->update($data);

    }catch(\Exception $e){

        //Log akan disimpan di STorage/logs/laravel.log
        Log::error('Cannot process update : '.$e->getMessage());
        //redirect with Error
        return Redirect::to('user/profile')->with('error_update',true);
   }

   //redirect success
   return Redirect::to('user/profile')->with('success_update',true);  
}

dengan try catch kita bisa menentukan kapan Query kita berhasil atau tidak

CMIIW

Comments



    Follow Us