Laravel-Excel возвращает требуемую ошибку со всеми строками - PullRequest
0 голосов
/ 22 ноября 2018

Я внедряю Laravel-Excel в свой проект и не могу определить валидацию.

Я пытаюсь загрузить файл xlsx с одной строкой данных в нем, но все ещеимпорт выдает ошибку required.

Ниже приводится мой EventResultImport код

namespace App\Imports;

use App\Models\Data\EventResult;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Imports\HeadingRowFormatter;

class EventResultImport implements ToModel, WithValidation, WithHeadingRow
{
    use Importable;

    public function model(array $row)
    {
        HeadingRowFormatter::default('none');

        return new EventResult([
            'event_id' => $row[0],
            'event_name' => $row[1],
        ]);
    }

    public function rules(): array
    {
        return [
            //'EventId' => 'required|numeric', Tried this
            //'*.EventId' => 'required|numeric', Tried this
            '0' => 'required|numeric'

        ];
    }
}

Я получаю сообщение об ошибке в событии второго ряда, если в столбце EventId есть числовые данные.

enter image description here

Спасибо

1 Ответ

0 голосов
/ 22 ноября 2018

Вы реализуете WithHeadingRow, поэтому атрибуты должны совпадать:

public function rules(): array
{
    return [
        'event_id' => 'required|numeric'
    ];
}

Чтобы пропустить нули:

public function model(array $row)
{
    if (!isset($row[0])) {
        return null;
    }

    return new User([
        'name' => $row[0],
    ]);
}
...