找不到两位数的月份 Laravel中数据丢失

5

我有一个表格,在其中通过日期选择器存储日期格式的数据。在存储日期时,我会这样做:

$data['schedule'] = Carbon::parse($request->schedule)->toDateTimeString();

然后在模型中我定义如下:

protected $dates = [
    'schedule', 'created_at', 'updated_at', 'deleted_at'
];

现在我正在使用diffForHumans()来获取日期,类似这样:

$event->schedule = $event->schedule->diffForHumans();

但是它报错了,错误信息如下:

找不到两位数的月份。数据缺失。

我检查了mysql数据库的格式,我的日期格式如下:

2017-07-02 14:38:23

编辑:

之前我在将日期存储到表格中时遇到了问题,请参考如何在Laravel中通过Vuejs Datepicker格式化接收的日期以获取详细说明。它会抛出以下错误:

无效的日期时间格式:1292行1的计划列的日期时间值不正确:'2017-05-04T18:30:00.000Z'

因此,我选择在将其存储到数据库中时使用Carbon :: parse

如何解决这个问题,请帮我解决。

谢谢。


问题在于你已经在$data['schedule']之前更改了格式,请将其注释掉并检查。 - Exprator
@Exprator 如果我不使用 Carbon::parse...,那么它将不接受表格中的值。 - Nitish Kumar
$data['schedule'] 之前执行 dd($request->schedule),你会得到什么? - Rwd
好的,所以您需要在访问Carbon中的日期时间时进行格式化,就像您在数据库中的格式一样。 - Exprator
@Exprator,是的,你可以说我正在寻找访问器。 - Nitish Kumar
我猜你可以在toDateTimeString或diffForHumans中传递格式,以根据你的需求进行格式化。仔细阅读文档,我想它会帮助你。 - Exprator
2个回答

4

在您的模型中尝试使用访问器方法。

public function getScheduleAttribute($value)
{
    return Carbon::parse($value)->diffForHumans();
}

并且可以通过以下方式访问属性:

$event->schedule;

2
尝试设置日期时间格式('Y-m-d H:i:s'),然后运行。

你的意思是作为变异器吗? - Nitish Kumar
是的 @NitishKumar 它对你有帮助吗? - V.joshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接