Я пытаюсь найти дублирующиеся строки в массиве импорта, используя проблему WithValidation (позже будет использовать SkipsOnError, чтобы удалить дублированные строки). Но проверка, установленная в моем классе импорта для поиска дублированных строк, похоже, не работает.
Ошибка не возвращается, и все строки импортируются в базу данных, когда я загружаю файл Excel (просто столбец без заголовков), содержащий дублированные данные
<?php
namespace App\Imports;
use App\Contactlist;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\WithValidation;
class ContactsImport implements ToModel, WithValidation
{
use Importable;
private $data;
public function __construct(array $data = [])
{
$this->data = $data;
}
public function model(array $row)
{
if (!isset($row[0])) {
return null;
}
return new Contactlist(array_merge([
'nums' => $row[0],
], $this->data));
}
public function rules(): array
{
return [
//find duplicate records
'0.*' => 'distinct',
//'*.0' => 'distinct' Tried this also
];
}
}
фрагмент кода моего контроллера
$data = [
'contact_id' => $contact->id,
];
Excel::import(new ContactsImport($data), request()->file('contact_file'));