Я пытаюсь загрузить файл Excel, который содержит даты в виде строк в формате dd.mm.YYYY.Я хочу проанализировать файл Excel и сохранить значения в базе данных MySQL.Я могу сделать это без проблем при создании новой записи в базе данных с помощью формы создания, которая имеет выбираемый HTML-ввод даты в виде:
<input type="date" id="expiry_date" class="form-control @error('expiry_date') is-invalid @enderror" name="expiry_date" value="{{ old('expiry_date') }}" required autocomplete="expiry_date">
Ниже приведена функция импорта внутриконтроллер, который использует класс Excel Maatwebsite.
public function import()
{
Excel::import(new excel_import(), storage_path('excel_file.xlsx'));
return redirect()->route('index');
}
Это вызывает класс excel_import, который показан ниже:
public function model(array $row)
{
try
{
$date = Carbon::createFromFormat("d.m.Y", $row[5])->format('Y-m-d');
//$timestamp = strtotime($row[5]);
//$date = date("Y-m-d", $timestamp);
return new Item([
'user' => $row[0],
'name' => $row[1],
'expiry_date' => $date,
]);
}
catch(Throwable $t){
return null;
}
}
Обратите внимание, что переменная даты, которую я пытаюсь ввести, называется expiry_date.Я пытался получить формат даты из Carbon и из метки времени (как в комментариях), но безрезультатно.В модели, которую я попытался установить как:
public $casts = ['expiry_date' => 'date:Y-m-d',];
public $dates = ['expiry_date',];
Также обратите внимание, что я настроил переменную expiry_date следующим образом при миграции:
$table->date('expiry_date')->nullable();
Я также использовал dd вформа create и в классе excel_import, которые показывали, но переменные были экземплярами Carbon datetime.Результатом является пустое поле для переменной expiry_date.Если я не установил expiry_date как nullable, он возвращает ошибку SQLSTATE [HY000]: Общая ошибка: 1364 Поле 'expiry_date' не имеет значения по умолчанию.Я действительно в замешательстве, любая помощь будет оценена.