Laravel импортировать ошибки проверки, пока данные существуют в файле - PullRequest
0 голосов
/ 01 мая 2020

Я использую Laravel -Excel и имею проблему с импортом моих данных из CSV-файла.

Когда я пытаюсь импортировать мой CSV-файл, он возвращает ошибки проверки

errors: {name: ["The name field is required."], stock: ["The stock field is required."],…}
  name: ["The name field is required."]
  price: ["The price field is required."]
  stock: ["The stock field is required."]
  message: "The given data was invalid."

Пока все эти данные представлены в моем CSV-файле

Capture

Код

Класс импорта

<?php

namespace App\Imports;

use App\Product;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Concerns\WithBatchInserts;
use Maatwebsite\Excel\Concerns\Importable;

class ProductsImport implements ToModel, WithBatchInserts, WithChunkReading
{
    use Importable;
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(array $row)
    {
        return new Product([
            'name'     => $row['name'],
            'stock'    => $row['stock'],
            'sku'    => $row['sku'],
            'price'    => $row['price'],
            'bottom_price'    => $row['bottom_price'],
            'cover'    => $row['cover'],
        ]);
    }

    public function batchSize(): int
    {
        return 500;
    }

    public function chunkSize(): int
    {
        return 500;
    }
}

Контроллер

    public function import(Request $request) 
    {
        Excel::import(new ProductsImport, $request->file('file'));

        return response()->json([
            'message' => 'Products are successfully imported.'
        ]);
    }

Маршрут

    Route::post('products/import', 'Api\ProductsController@import');

Есть идеи, что может быть не так?

Обновление

Component script

importFile() {
    this.importFile = this.$refs.importFile.files[0];
    let formData = new FormData();
    formData.append('file', this.importFile, this.importFile.name);


    axios.post( '/api/admin/products/import', formData, {
        headers: {
            'Content-Type': 'multipart/form-data',
            Authorization: localStorage.getItem('access_token')
        }
    }).then(res => {
        this.$notify({
            title: 'Hooray!',
            message: res.data.message,
            offset: 100,
            type: 'success'
        });
    })
    .catch(error => {
        var errors = error.response.data;
        let errorsHtml = '<ol>';
        $.each(errors.errors,function (k,v) {
            errorsHtml += '<li>'+ v + '</li>';
        });
        errorsHtml += '</ol>';

        this.$notify.error({
            title: 'Import Error',
            dangerouslyUseHTMLString: true,
            message: errorsHtml
        });
    });
},

1 Ответ

0 голосов
/ 01 мая 2020

Решено

Проблема исходила от маршрутов, так как мой маршрут импорта с префиксной группой вызывал ошибку 422. после размещения моего маршрута поверх файла api.php он работает просто отлично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...