laravel - 通过 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'
解决方案
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'];
}
推荐阅读
- node.js - 需要为社交网络平台帖子使用 Redis 并正确实施的建议
- node.js - 如何根据 Angular 中选择的数据类型创建视图?
- vue.js - 我需要在 nuxtjs 上使用 JSZip 为多个文件制作 zip
- regex - 在特殊字符之后返回短语的某些元素
- android - 在不同的 Android 版本上动态更改工具栏菜单项文本颜色
- javascript - 如何在 JavaScript 正则表达式中转义单个反斜杠?
- angular - docker run 后 Docker 自己被杀了
- authentication - Django rest框架注销和登录视图不起作用
- sql - best way to convert column to json array (Oracle)
- groovy - ProxyException:groovy.lang.MissingMethodException:没有方法签名:java.lang.Class.encode()