2017-10-08 10 views
0

I Love 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

시도해주세요. array_push을 사용하여 채우기 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

여전히 동일합니다. 파일은 업로드되었지만 데이터베이스에서는 아무것도 표시되지 않습니다. – stoneshak