2017-03-02 5 views
1

私はlaravel framework 5.2を使用しています。私は私が正常にインストールされ、正常にインポートCSV形式のファイルをが、問題があるしているMaatwebsite Excelのパッケージを使用しています: 私は1つのテーブルと列されていると仮定: -laravelでアップロード中にcsvファイルを検証する方法は?

enter code here 
Tbale name:- employees_schedule 
columns are:- user_id, customer_name, date, 

今私はcsv形式のファイルをアップロード

enter code here 
then csv file colums are:- 
user_id,customer_name,date, hacking_column, time 

3つの列(user_id、customer_name、date)を持つcsvファイルをアップロードすると、アップロードが正常に完了しました。今ポイント私はCSVで2つの他の列を追加したとき、私は、エラーメッセージを表示する必要がありますされては、「あなたのcsvファイルは、いくつかの不要な列を持っている」というsomne​​thinglike

ができますhelpmeがここ

enter code here 
public function UploadSchedule(Request $request){ 
     if($request->isMethod('post')){ 
      $data = $request->all(); 
      //echo "<pre>"; print_r($data); die; 
      Excel::load(Input::file('schedule'),function($reader){ 
       $reader->each(function($sheet){ 
        EmployeeSchedule::firstOrCreate($sheet->toArray()); 
       }); 
      }); 
      return redirect()->back()->with('flash_message_success', 'Your Employee Schedule Uploaded successfully!'); 
     } 

ブレードファイル私の関数であり、誰: -

enter code here 
<form id="addForm" role="form" class="form-horizontal" method="post" action="{{ url('admin/upload-employee-schedule') }}" enctype="multipart/form-data"> 
         <input type="hidden" name="_token" value="{{{ csrf_token() }}}" /> 
         <div class="form-body"> 
          <div class="form-group"> 
           <label class="col-md-3 control-label">Upload Schedule:</label> 
           <div class="col-md-5"> 
            <input type="file" id="csv" name="schedule"> 
           </div> 
          </div>       
         </div> 
         <div class="form-actions right1 text-center"> 
          <button id="check" class="btn green" type="submit">Submit</button> 
         </div> 
        </form> 

答えて

0

私は自分自身の解決策を見つけました。私はファイルを開いて最初のヘッダー行を取得するだけです。ここに私の抜粋です: -

public function UploadSchedule(Request $request){ 
if($request->isMethod('post')){ 
    $data = $request->all(); 
    $file = Input::file('schedule'); 
    $handle = fopen($file,"r"); 
    $header = fgetcsv($handle, 0, ','); 
    $countheader= count($header); 
    if($countheader<4 && in_array('user_id',$header) && in_array('customer_name',$header) && in_array('date',$header)){ 
     Excel::load($file ,function($reader){ 
      $reader->each(function($sheet){ 
       $sheet['date'] = date('Y-m-d',strtotime($sheet['date'])); 
       EmployeeSchedule::firstOrCreate($sheet->toArray()); 
      }); 
     }); 
    } else { 
     return redirect()->back()->with('flash_message_error', 'Your CSV files having unmatched Columns to our database...Your columns must be in this sequence <strong> user_id,customer_name,date </strong> only'); 
    } 
    return redirect()->back()->with('flash_message_success', 'Your Employee Schedule Uploaded successfully!'); 

}

関連する問題