Laravel 5.7:SQLSTATE[22007]:日期时间格式无效:1292 日期值不正确:第 1 行“resident_dob”列的“35492”

Ara*_*to 1 import excel laravel laravel-5.7

我正在尝试导入包含一些数据的 excel 文件,但发生错误

SQLSTATE[22007]:无效的日期时间格式:1292 不正确的日期值:第 1 行的“resident_dob”列的“35492”

起初我猜测它可能与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],
    ]);
}
Run Code Online (Sandbox Code Playgroud)

我真的不知道如何处理这个错误。谁能帮我这个?我还是 Laravel 的新手。

Vin*_*ney 5

问题是 SQL 不支持您在 excel 中提供的日期格式(除非更改了默认配置)

默认情况下,SQL 可以将您的日期存储为 1997-03-03 00:00:00 转换为Y-m-d H:i:sPHP 日期格式

因此,您需要使用 DateTime 或 laravel 的 Carbon 包手动将其转换为预期格式。下面我使用了碳

在顶部声明这个

use Carbon;
Run Code Online (Sandbox Code Playgroud)

现在转换日期

'resident_dob' => Carbon::parse($row[3])->format('Y-m-d H:i:s');
Run Code Online (Sandbox Code Playgroud)