Свойство [имя] не существует в этом экземпляре коллекции с использованием maatwebsite / excel: ~ 2.1.0 - PullRequest
0 голосов
/ 10 мая 2019

Пытаюсь импортировать файл Excel в Laravel 5.5 и вставить данные в базу данных. следуя этому уроку. https://laratutorials.wordpress.com/2017/10/03/how-to-import-excel-file-in-laravel-5-and-insert-the-data-in-the-database-laravel-tutorials/comment-page-1/#comment-262

Мне удалось получить и проверить выбранный файл. но получаю эту ошибку: Свойство [имя] не существует в этом экземпляре коллекции.

  public function import(Request $request){
    //validate the xls file
    $this->validate($request, array(
        'file'      => 'required'
    ));

    if($request->hasFile('file')){
        $extension = File::extension($request->file->getClientOriginalName());
        if ($extension == "xlsx" || $extension == "xls" || $extension == "csv") {

            $path = $request->file->getRealPath();
            $data = Excel::load($path, function($reader) {
            })->get();
            if(!empty($data) && $data->count()){

                foreach ($data as $key => $value) {
                    $insert[] = [
                    'name' => $value->name,
                    'email' => $value->email,
                    'phone' => $value->phone,
                    ];
                }

                if(!empty($insert)){

                    $insertData = DB::table('students')->insert($insert);
                    if ($insertData) {
                        Session::flash('success', 'Your Data has successfully imported');
                    }else {                        
                        Session::flash('error', 'Error inserting the data..');
                        return back();
                    }
                }
            }

            return back();

        }else {
            Session::flash('error', 'File is a '.$extension.' file.!! Please upload a valid xls/csv file..!!');
            return back();
        }
    }
}

dd ($ data) вывести это

      SheetCollection {#609 ▼
  #title: ""
  #items: array:3 [▼
    0 => RowCollection {#412 ▼
      #heading: array:3 [▼
        0 => "name"
        1 => "email"
        2 => "phone"
      ]
      #title: "Sheet1"
      #items: array:3 [▼
        0 => CellCollection {#575 ▼
          #title: null
          #items: array:3 [▼
            "name" => "emma"
            "email" => "emma@yahoo.com"
            "phone" => 89889898.0
          ]
        }
        1 => CellCollection {#621 ▼
          #title: null
          #items: array:3 [▼
            "name" => "Godstime John"
            "email" => "jgodstime10@yahoo.com"
            "phone" => 909989898.0
          ]
        }
        2 => CellCollection {#414 ▼
          #title: null
          #items: array:3 [▼
            "name" => "John Emma"
            "email" => "jgh@email.com"
            "phone" => 9090898.0
          ]
        }
      ]
    }
    1 => RowCollection {#571 ▼
      #heading: array:1 [▼
        0 => ""
      ]
      #title: "Sheet2"
      #items: []
    }
    2 => RowCollection {#572 ▼
      #heading: array:1 [▼
        0 => ""
      ]
      #title: "Sheet3"
      #items: []
    }
  ]
}

Я хочу иметь возможность загрузить строку в файле Excel (имя, адрес электронной почты, телефон) в таблицу ученика в моей базе данных, в которой есть поля (идентификатор, имя, адрес электронной почты, телефон). Я прошел весь шаг по ссылке выше. все же я получаю вышеупомянутое сообщение об ошибке.

1 Ответ

0 голосов
/ 12 мая 2019
foreach ($data[0] as $key => $value) {
  // dd($value->name);

 $insert[] = [
 'name' => $value->name,
 'email' => $value->email,
 'phone' => $value->phone,
 ];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...