#excel #laravel #import #laravel-5.7
#excel #laravel #импорт #laravel-5.7
Вопрос:
Я пытаюсь импортировать файл Excel, содержащий некоторые данные, и произошла ошибка
SQLSTATE [22007]: Недопустимый формат даты и времени: 1292 Неверное значение даты: ‘35492’ для столбца ‘resident_dob’ в строке 1
Сначала я предположил, что это могло быть связано с данными в файле Excel, и я заметил, что его формат не соответствует формату в SQL, поэтому я попытался изменить его, но произошла та же ошибка. кстати, вот данные файла Excel
Вот код для модели:
public function model(array $row)
{
return new Resident([
'resident_fname' => $row[0],
'resident_lname' => $row[1],
'resident_mi' => $row[2],
'resident_dob' => $row[3],
'role' => $row[4],
'resident_age' => $row[5],
'resident_address' => $row[6],
'resident_contact' => $row[7],
'resident_email' => $row[8],
'resident_purok' => $row[9],
'resident_status' => $row[10],
'resident_gender' => $row[11],
'resident_religion' => $row[12],
'ResidentVoter_status' => $row[13],
]);
}
Я действительно понятия не имею, что делать с этой ошибкой. Кто-нибудь может мне помочь с этим? Я все еще новичок в Laravel.
Ответ №1:
Проблема в том, что SQL не поддерживает формат даты, который вы вводите в Excel (если не изменена конфигурация по умолчанию)
По умолчанию SQL может хранить вашу дату как 1997-03-03 00:00:00, что переводится в Y-m-d H:i:s
в формате даты PHP
Поэтому вам нужно вручную преобразовать его в ожидаемый формат, используя либо DateTime, либо пакет Carbon от laravel. Ниже я использовал Carbon
Объявите это вверху
use Carbon;
А теперь преобразуйте дату
'resident_dob' => Carbon::parse($row[3])->format('Y-m-d H:i:s');
Комментарии:
1. Отлично работает! Мне пришлось отформатировать его как ‘Y-m-d’ для типа даты, чтобы
2. @SalimDjerbouh Согласно документам Carbon на carbon.nesbot.com/laravel , «Как только вам нужно сохранить дату (со временем или без него), вы должны сохранить полное datetime».