Ошибка при импорте данных из Excel в Laravel 6? - PullRequest
0 голосов
/ 25 марта 2020

Я получаю сообщение об ошибке при импорте данных из листа Excel, я делаю это с помощью контроллера. и я получаю эту ошибку Call to undefined method Maatwebsite\Excel\Excel::load()

Пожалуйста, дайте мне знать, если это возможно по модели, ....

Вот мой модельный отряд. php

<?php
  namespace App;
  use Illuminate\Database\Eloquent\Model;
  class Lead extends Model
 {
 protected $primaryKey = 'lId';
}

Вот мой контроллер LeadController. php

public function import(Request $request){
$this->validate($request, [
    'select_file' => 'required|mimes:xls, xlsx'
]);
$path=$request->file('select_file')->getRealPath();
$data=Excel::load($path)->get();
if($data->count() > 0)
{
    foreach ($data->toArray() as $key => $value) 
    {
        foreach($valuse as $row)
        {
            $insert_data[]=array(
                'Name'=>$row['name'],
                'Project'=>$row['project'],
                'Follow up Date'=>$row['followup'],
                'Lead Source'=>$row['lead_source'],
                'Email Id'=>$row['email'],
                'Message'=>$row['message'],
                'Phone Number'=>$row['number'],
                'Status'=>$row['status'],
            );
        }
    }
    if(!empty($insert_data))
    {
        DB::table('leads')->insert($insert_data);
    } 
}
return back()->with('success', 'Excel Data Imported successfully.');
}

А вот мой код View ...

<form action="{{ route('import') }}" method="POST" enctype="multipart/form-data">
                            @csrf
                            <input type="file" name="select_file" class="form-control">
                            <br>
                            <input type="submit" name="upload" class="btn btn-primary" value="Upload">
</form>

Вот мой Web. php

Route::post('lead/import', 'LeadController@import')->name('import');

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

До этого я выполнял функцию импорта и также встречал эту ошибку. Вы можете использовать версию 2.x, упомянутую Sehdev:

  1. удалить конфигурацию / excel. php
  2. на вашем composer. json, изменить "maatwebsite / excel ":" ^ 3.1 "в" maatwebsite / excel ":" ^ 2.1 "
  3. run composer update

Или, если вы настаиваете использовать его в версии 3.1, как я Вот как я это решаю.
Использование:

$data = Excel::toArray(new ContactImport,$request->file('select_file'))[0];

Вместо:

$data=Excel::load($path)->get();

ContactImport - это класс импорта, который я создал с помощью php artisan make:import ContactImport --model=User, следуя 5 минут полного начала в Laravel документации Excel.

https://docs.laravel-excel.com/3.1/imports/

Я Laravel новичок ie. Надеюсь, мое предложение может решить вашу проблему.

0 голосов
/ 25 марта 2020

Согласно Laravel Документация Excel 3 Изменения

Excel::load() удалены и заменены на Excel::import($yourImport)

Решите это Ошибка Либо используйте версию 2.x, как показано ниже

composer require "maatwebsite/excel:~2.1.0"

ИЛИ

Используйте import() метод version 3

Вам необходимо следовать Ниже приведены шаги для использования import метода version3

Шаг 1: Создание файла импорта с помощью команды ниже.

php artisan make:import CsvImport

Step2: Внутри CsvImport внесите следующие изменения:

namespace App\Imports;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;

class CsvImport implements ToCollection
{
    public function collection(Collection $rows)
    {
        return $rows; //add this line
    }
}

Step3: В Controller внесите следующие изменения:

 $path = $request->file('csv_file')->getRealPath();
 $rows = Excel::import(new CsvImport, $path);
...