Как я могу отобразить мои импортированные данные Excel? - PullRequest
0 голосов
/ 28 апреля 2020

В настоящее время работает над импортом из Excel. Я хочу импортировать лист Excel и отобразить его информацию на другой странице, используя foreach l oop. Однако по некоторым причинам это кажется довольно сложным. Когда я делаю ie и сбрасываю собранные данные (использовал это, потому что импорт был бы ошибкой), он показывает все правильно. Данные в таблице находятся там, где и должны быть. Так что я чувствую, что все в порядке. Однако я не могу вставить его в свою базу данных по какой-то странной причине. У меня есть строка заголовка, поэтому я использую функциональность WithHeaderRow.

Класс DataImport:

<?php

namespace App\Imports;

use App\Data;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Imports\HeadingRowFormatter;

HeadingRowFormatter::default('none');


class DataImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */

    public function model(array $row)
    {
        return new Data([
            'cliëntnummer'      =>  $row['clientnummer'],
            'zoeknaam'          =>  $row['zoeknaam'],
            'naam'              =>  $row['naam'],
            'omschrijving'      =>  $row['omschrijving'],
            'plaats'            =>  $row['plaats'],
            'week'              =>  $row['week'],
            'vennoot'           =>  $row['vennoot'],
            'relatiebeheerder'  =>  $row['relatiebeheerder'],
            'samensteller'      =>  $row['samensteller'],
            'ADVer'             =>  $row['adver'],
            'cliëntgroepcode'   =>  $row['clientgroepcode'],
            'accountant'        =>  $row['accountant'],
            'samenstellen'      =>  $row['samenstellen'],
            'ADV jaarwerk'      =>  $row['ADVJaarwerk'],
            'periodieke ADV'    =>  $row['periodiekeADV'],
            'fiscaliteiten'     =>  $row['fiscaliteiten'],
        ]);
    }
}

Datacontroller. php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Imports\DataImport;
use Maatwebsite\Excel\Facades\Excel;
use App\Http\Controllers\Controller;

class DataController extends Controller
{
    public function index(){
        return view('importeren');
    }

    public function import(Request $request){

        $datas = Excel::toCollection(new DataImport(), $request->file('import_file'));
        dd($datas);
        return redirect()->route('/home');
    }
}

Модель данных:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Data extends Model
{
    protected $fillable = [
        'id', 'cliëntnummer', 'zoeknaam', 'naam', 'omschrijving', 'plaats', 'week', 'vennoot', 'relatiebeheerder', 'samensteller', 'ADVer', 'cliëntgroepcode', 'accountant', 'samenstellen', 'ADV jaarwerk', 'periodieke ADV', 'fiscaliteiten',
    ];
}

Данные электронной таблицы:

Структура таблицы базы данных:

Результаты сбора данных:

Если я что-то пропустил, не стесняйтесь сказать мне. Надеюсь, этого достаточно.

1 Ответ

0 голосов
/ 29 апреля 2020

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

<?php

namespace App\Imports;

use App\Data;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Imports\HeadingRowFormatter;

HeadingRowFormatter::default('none');


class DataImport implements ToModel, WithHeadingRow
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */

    public function model(array $row)
    {
        return new Data([
            'cliëntnummer'      =>  $row['Cliëntnummer'],
            'zoeknaam'          =>  $row['Zoeknaam'],
            'naam'              =>  $row['Naam'],
            'omschrijving'      =>  $row['Omschrijving'],
            'plaats'            =>  $row['Plaats'],
            'week'              =>  $row['Week'],
            'vennoot'           =>  $row['Vennoot'],
            'relatiebeheerder'  =>  $row['Relatiebeheerder'],
            'samensteller'      =>  $row['Samensteller'],
            'ADVer'             =>  $row['ADVer'],
            'cliëntgroepcode'   =>  $row['Cliëntgroepcode'],
            'accountant'        =>  $row['Accountant'],
            'samenstellen'      =>  $row['Samenstellen'],
            'ADVJaarwerk'       =>  $row['ADVJaarwerk'],
            'PeriodiekeADV'     =>  $row['PeriodiekeADV'],
            'fiscaliteiten'     =>  $row['Fiscaliteiten'],
        ]);
    }
}
...