Maatwebsite 3.1 импорт нескольких моделей по одному методу


Maatwebsite 3.1 импорт нескольких моделей по одному методу

18.03.2019 02:54:38 Просмотров 7 Источник

Хиии! Я просто пытаюсь использовать импорт пакета excel с помощью maatwebsite . Я успешно использую его, хоррай!! Но вдруг я хочу попробовать импортировать 1 файл excel и вставить его в две разные модели. Я пробовал использовать один importClass и сделать return new model Siswa и return new model User вот так

(это importClass, что я пробовал)

namespace App\Imports;

use App\Siswa;
use Maatwebsite\Excel\Concerns\ToModel;

class PengunjungImport implements ToModel
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new Siswa([
            'namalengkap' => $row[0],
            'kelas' => $row[1],
            'jenkel' => $row[2],
            'status' => $row[3],
            'contact' => $row[4],
        ]);
        return new User([
          'name' => $row[0],
          'email' => $row[5],
          'password' => 'siswasmkn10',
        ]);
    }
}

Но это работает только на первой модели (Siswa). То же самое, если я изменю return new User на первый и return new Siswa на второй, это будет работать только на первой модели (пользователь).

Я тоже пробовал импортировать два разных класса импорта в одном методе, как это. Но он возвращает ошибку

Досье "siswa10duplicate.xls" не был загружен из-за неизвестной ошибки.

(это именно то, что я пробовал)

public function processImportSiswa(Request $request)
    {
        Excel::import(new PengunjungImport, $request->file('import_siswa'));
        Excel::import(new UsersImport, $request->file('import_siswa'));
        return back();
    }

Как я могу сделать импорт одного файла excel и вставить его в несколько рабочих таблиц? Пожалуйста помогите мне дать какой нибудь ресурс или пример кода это лучше :)

У вопроса есть решение - Посмотреть?

Ответы - Maatwebsite 3.1 импорт нескольких моделей по одному методу / Maatwebsite 3.1 import multiple model on same method

Является ответом!
namelivia

18.03.2019 03:06:11

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

Проблема, с которой вы столкнулись, заключается в том, что вы не можете импортировать файл дважды в запросе, проверьте эту проблему, обсуждая ее. Вы должны сначала загрузить файл, а затем использовать этот файл в обоих вызовах.

Amir Kaftari

11.10.2020 05:22:26

Измените класс импорта на этот :

namespace App\Imports;

use App\User;
use App\Siswa;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;

class PengunjungImport implements ToCollection
 {
   public function collection(Collection $rows)
    {
      foreach ($rows as $row) 
      {
        Siswa::create([
           'namalengkap' => $row[0],
           'kelas' => $row[1],
           'jenkel' => $row[2],
           'status' => $row[3],
           'contact' => $row[4],
         ]);
        
        User::create([
            'name' => $row[0],
            'email' => $row[5],
            'password' => 'siswasmkn10',
        ]);
     }
   }
}

Вместо импорта в модель можно импортировать в коллекцию и создать две модели в каждой строке.

Помочь в развитии проекта:
Закрыть X