首页 > 解决方案 > 通过 Laravel 5.8 更改日期格式以将其保存在数据库中

问题描述

我是 Laravel 的新手;

我正在使用 Data Packer Jquery,它的输出格式如下:

2019 年 8 月 14 日

我托盘通过此代码将其保存在数据库中:

if ($request -> isMethod('post')) {
        $data = $request -> all();
        $course = new Courses;
        $course -> start_date = $data['start_date'];
        $course -> save();
        return redirect('/admin/courses');
    }

但我发现了这个错误:

SQLSTATE [22007]:无效的日期时间格式:1292 不正确的日期值:第 1 行的列 'start_date' 的日期值不正确:'14-Aug-2019'

标签: laravel

解决方案


MySQL 期望 date 像2019-08-14并且您正在尝试保存14-Aug-2019. 所以你得到了错误。您可以通过从前端发送确切的格式化日期或在后端解析它来解决它。

从日期选择器发送Y-m-d

$( "#date" ).datepicker({
   dateFormat: 'yy-mm-dd',
});  

它会发送日期2019-08-14,您可以直接保存。

如果您想使用这样的格式,14-Aug-2019则必须使用 Carbon 解析它,以便将其保存在数据库中。

use Carbon\Carbon;
$date = '14-Aug-2019';
$d = Carbon::parse($date)->format('Y-m-d'); //return date 2019-08-14

在您的模型中投射您start_date的日期。它将帮助您以任何方式格式化它。

class Courses extends Model
{
    protected $dates = ['start_date'];
} 

推荐阅读