Я использую пакет Laravel Excel для массовой загрузки. Несмотря на то, что я могу успешно загрузить данные, моя веб-консоль указывает и выдает ошибку, что «staff_id» не имеет значения по умолчанию. Я пытался поймать это как исключение, но это не срабатывает. Я использую импорт ToModel, как указано ниже
class EmployeesImport implements ToModel, WithHeadingRow
{
public function model(array $row)
{
try {
return new Employee([
'staff_id' => $row['staff_id'],
'first_name' => $row['first_name'],
'middle_name' => $row['middle_name'],
'last_name' => $row['last_name'],
'national_id' => (string) $row['national_id'],
'department_id' => 1,
]);
} catch (\Exception $e) {
dd($e->getMessage(), $row);
}
}
}
CSV Im импорта имеет следующую структуру
В моем контроллере у меня есть это, чтобы превысить загрузку / импорт
Excel::import(new EmployeesImport(), request()->file('bulk'));
И, наконец, это моя Модель сотрудников, показывающая заполняемые поля
class Employee extends Model
{
use SoftDeletes;
protected $table = "employees";
protected $fillable = [
"staff_id", "first_name", "middle_name", "last_name", "national_id", "department_id", "avatar"
];
}
(И последнее.) Если это может иметь значение - мой метод переноса файла up
public function up()
{
Schema::create('employees', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('staff_id')->unique();
$table->string('first_name');
$table->string('middle_name')->nullable();
$table->string('last_name');
$table->string('national_id')->unique();
$table->unsignedBigInteger('department_id');
$table->longText('avatar')->nullable();
$table->timestamps();
$table->softDeletes();
//Foreign keys
$table->foreign('department_id')->references('id')->on('departments')->onDelete('cascade');
});
}