2017-12-20 11 views
0

インポートする前にCSVファイルが存在するかどうかを確認し、存在する場合は既存のレコードが更新されることを示すメッセージを表示できます。ユーザーが「はい」をクリックすると、インポートメソッドが機能し、重複していないレコードが追加され、重複レコードが存在する場合は既存のレコードが更新されます。LaravelインポートCSV存在する場合はメッセージダイアログを表示

どうすればいいのかはっきりしていることを明確にしてください。

コントローラ:

public function store(Request $request) 
{ 
    $upload=$request->file('upload-file'); 
    $filePath=$upload->getRealPath(); 
    $file=fopen($filePath,'r'); 
    $header=fgetcsv($file); 
    $escapedHeader=[]; 
    foreach ($header as $key => $value) { 
     $header=strtolower($value); 

     $escapedItem=preg_replace('/[^a-z]/','', $header); 
     array_push($escapedHeader, $escapedItem); 

    } 
    while($columns=fgetcsv($file)) 
    { 
     if($columns[0]=="") 
     { 
      continue; 
     } 
     foreach ($columns as $key => $value) { 
      $value=preg_replace('/\D/','', $value); 
     } 
     $data=array_combine($escapedHeader, $columns); 
     $details=$data['details']; 
     $postingdate=$data['postingdate']; 
     $description=$data['description']; 
     $amount=$data['amount']; 
     $type=$data['type']; 
     $slip=$data['checkorslip']; 
     $addchecks=Checks::firstOrNew(['details'=>$details, 
      'postingdate'=>$postingdate,'description'=>$description, 
      'amount'=>$amount,'type'=>$type]); 

     $addchecks->postingdate=$postingdate; 
     $addchecks->description=$description; 
     $addchecks->amount=$amount; 
     $addchecks->type=$type; 
     $addchecks->slip=$slip; 

     $addchecks->save(); 
    } 
} 

答えて

0

まずあなたがテーブルにインポートをログに記録できます。ファイル名、インポート日、エラーなど...

ファイルが既にインポートされているかどうかを確認するには、そのコンテンツのハッシュを作成し、それを前記ロギングテーブルに格納します。新しいファイルがアップロードされると、コンテンツのハッシュを作成し、それをロギングテーブルのものと比較します。既に存在する場合は、インポートしない場合はエラーをスローします。

+0

私は一時テーブルを作成したいですか? – Msaas

+0

あなたのインポートをログする通常のテーブルです。 'ImportLog'モデルを持つことさえできます。 –

関連する問題