Как объединить данные CSV и другие данные, собранные в приложении Laravel Excel - PullRequest
1 голос
/ 08 октября 2019

У меня есть CSV-файл, который содержит контакты. Каждый раз, когда я загружаю файл и пытаюсь сохранить другие данные, собранные в приложении, которое он не группирует, и добавить их все вместе

Это мой код, пожалуйста, помогите!

//import pins & save additional data
    public function importPins(Request $request)
    {
        //save the records
        $pins = new Pins([
            'rewardName' => 'Game Gateway',
            'rewardId' => '1',
            'username' => 'Admin'
        ]);
        Excel::import(new PinsImport, request()->file('csv_file'));
        $pins->save();
        return back()->with('success', 'Pins Imported successfully.');
    }

//Pins Import class
<?php

namespace App\Imports;

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

class PinsImport implements ToModel
{
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new Pins([
            'voucherPin' => $row[0]
        ]);
    }
}

1 Ответ

0 голосов
/ 09 октября 2019

Вы можете попытаться передать атрибуты, которые хотите использовать для создания моделей, в класс Import.

class PinsImport ...
{
    protected $attributes = [];

    public function __construct($attributes = [])
    {
        $this->attributes = $attributes;
    }

    public function model(array $row)
    {
        return new Pins([
            'voucherPin' => $row[0]
        ] + $this->attributes);
    }
}


$attributes = [
    'rewardName' => 'Game Gateway',
    'rewardId' => '1',
    'username' => 'Admin'
];

Excel::import(new PinsImport($attributes), request()->file('csv_file'));
...