Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Imports;
- use App\Models\Buffer;
- use Maatwebsite\Excel\Concerns\ToModel;
- use App\Models\Source;
- use Maatwebsite\Excel\Concerns\WithChunkReading;
- use Illuminate\Contracts\Queue\ShouldQueue;
- use Maatwebsite\Excel\Concerns\SkipsFailures;
- use Maatwebsite\Excel\Concerns\SkipsOnFailure;
- use Maatwebsite\Excel\Concerns\WithValidation;
- use Maatwebsite\Excel\Concerns\WithStartRow;
- class BufferImport implements ToModel, SkipsOnFailure, WithValidation, WithStartRow, WithChunkReading, ShouldQueue
- {
- use SkipsFailures;
- protected $sourceId;
- protected $startRow;
- protected $dataColumn;
- protected $priceColumn;
- public function __construct(Source $source)
- {
- $this->sourceId = $source->id;
- $this->startRow = $source->start_row;
- $this->dataColumn = $source->data_column - 1;
- $this->priceColumn = $source->price_column - 1;
- }
- /**
- * @param array $row
- *
- * @return \Illuminate\Database\Eloquent\Model|null
- */
- public function model(array $row)
- {
- return new Buffer([
- 'source_id' => $this->sourceId,
- 'source_string' => $row[$this->dataColumn],
- 'distinct_string' => $row[$this->dataColumn],
- 'cost' => (float) $row[$this->priceColumn],
- ]);
- }
- public function startRow(): int
- {
- return $this->startRow;
- }
- public function rules(): array
- {
- return [
- $this->dataColumn => 'required',
- $this->priceColumn => 'required',
- ];
- }
- public function chunkSize(): int
- {
- return 500;
- }
- }
Add Comment
Please, Sign In to add comment