2017-10-08 4 views
0

Laravel 5.3を使用しています。 Csvファイルをデータベースにアップロードしようとしています。 Csvのタイトルとデータベースフィールドは同じです。ファイルは問題なくサーバーにアップロードされますが、データベースにデータを取得できません。私は間違って何をしていますか? CSVは正常にインポートされましたが、データベースには何もありません。ありがとうCSVをデータベースにインポートするLaravel

function postImport(Request $request) 
{ 

    if(!is_null($request->file('fileimport'))) 
    { 
     $file =  $request->file('fileimport'); 
     $filename = $file->getClientOriginalName(); 
     $uploadSuccess = $file->move('./uploads/' , $filename); 
     if($uploadSuccess) { 
      $csv = array_map('str_getcsv', file('./uploads/'.$filename)); 
      $table = $this->info['config']['grid']; 
      $fields = array(); 
      foreach($table as $f) 
      { 
       $fields[] = $f['field']; 
      } 
      //print_r($fields); 
      foreach($csv as $row) { 
       $data = array(); 
       foreach($fields as $key=>$val) 
       { 
        if($key != 0) 
         $data[$val] = (isset($row[$key]) ? $row[$key] : '') ; 
       } 
       //print_r($data); 
       //echo $row[0]; 
       $this->model->insertRow($data ,$row[0]);  

      } 

      return response()->json(array('status' => 'success','message'=>'Csv Imported Successfully !'));    
     } else { 
      return response()->json(array('status' => 'error','message'=>'Upload Failed!')); 
     } 
    } else {    
     return response()->json(array('status' => 'error','message'=>'Please select file to Upload!')); 
    } 

} 

答えて

0

このようにしてください。 fields配列

function postImport(Request $request) 
    { 

     if(!is_null($request->file('fileimport'))) 
     { 
      $file =  $request->file('fileimport'); 
      $filename = $file->getClientOriginalName(); 
      $uploadSuccess = $file->move('./uploads/' , $filename); 
      if($uploadSuccess) { 
       $csv = array_map('str_getcsv', file('./uploads/'.$filename)); 
       $table = $this->info['config']['grid']; 
       $fields = array(); 
       foreach($table as $f) 
       { 
        array_push($fields,$f['field']); 
       } 
       //print_r($fields); 
       foreach($csv as $row) { 
        $data = array(); 
        foreach($fields as $key=>$val) 
        { 
         if($key != 0) 
          $data[$val] = (isset($row[$key]) ? $row[$key] : '') ; 
        } 
        //print_r($data); 
        //echo $row[0]; 
        $this->model->insertRow($data ,$row[0]);  

       } 

       return response()->json(array('status' => 'success','message'=>'Csv Imported Successfully !'));    
      } else { 
       return response()->json(array('status' => 'error','message'=>'Upload Failed!')); 
      } 
     } else {    
      return response()->json(array('status' => 'error','message'=>'Please select file to Upload!')); 
     } 

    } 
+0

はまだ同じ移入するarray_pushを使用しました。ファイルはアップロードされましたが、データベースには何もありません:( – stoneshak

関連する問題