首页 > 解决方案 > 为什么我将时间戳保存在数据库中,当我检索它时它变成了字符串?(拉拉维尔)

问题描述

我很难确定当我检索它时时间戳变成字符串的原因。当我转储它时,它是一个明确的时间戳类型。有人帮我解决这个问题的原因和可能的解决方案。

这是我保存它的方法。

$user->start_at = Carbon::parse(now()->addDay());

以及从数据库保存后我如何使用它。

$user->start_at->lte(now())

但它返回一个错误(它说它甚至是它的时间戳)

错误:对文件中的字符串调用成员函数 lte()


保存前的截图。 在此处输入图像描述

我尝试添加public $timestamps = true;模型,但仍然无法正常工作。

标签: phplaravel

解决方案


您需要告诉 Eloquent 该字段是一个日期字段,并带有dates值。这会将指定的任何字段转换为 Carbon 对象。将此行添加到模型类的顶部。

protected $dates = ['start_at'];

https://laravel.com/docs/8.x/eloquent-mutators#date-casting

或者

protected $casts = [
    'start_at' => 'datetime:Y-m-d H:i:s',
];

推荐阅读