2017-04-26 9 views
0

DBからファイルを更新して3つのテーブルに挿入しています。エラーがスローされなかった場合、すべてがOKになったかどうかをチェックして、アップロードが正常に行われた場合にユーザーに成功メッセージを表示できるようにしたいと思います。どうやってやるの?Laravel 5.4 - モデルの挿入と更新がすべて正常に行われたかどうかを確認します

これは私のコードです:

public function upload(Request $request) 
    { 
    if ($request->hasFile('csvFile')) { 
     $file = $request->file('csvFile'); 
     $file->move('uploads', $file->getClientOriginalName()); 
     $this->store($file); 
    } 

    Session::flash('flash_message','File was successfully uploaded.'); 

    return view('home'); 
    } 

    public function store($file) 
    { 
    $path = base_path('public/uploads/' .$file->getClientOriginalName()); 
    $rows = Excel::load($path, function($reader) { })->get()->toArray(); 

    foreach($rows as $row) { 

     $id = $row[4]; 
     $shopeTitle = $row[1]; 
     $price = $row[6]; 
     $mall = $row[5]; 
     $visitors = $row[3]; 

     Shop::updateOrCreate(
     ['id' => $id], 
     ['title' => $shopeTitle] 
    ); 

     Mall::where('id', $id)->update([ 
     'price' => $price, 
     'visitors' => $visitors 
     ]); 

     if ($mall != 41 || $mall!= 42) { 
     DB::table('store_mall')->insert([ 
      'mall' => $price, 
      'store' => $id 
     ]); 
     } 
    } 
    } 

答えて

0

私はあなたがトランザクションを使用すべきだと思います。 あなたはLaravel DB Transactions

で読むことができる

try { 
    DB::beginTransaction(); 

    //your insert updates here 

    //if everything ok commit transaction 
    DB::commit(); 
} catch (Exception $ex) { 
    //if errors exist roll back transaction 
    DB::rollBack(); 
} 

詳しい情報のような何かを行うことができます

関連する問題