Laravel错误:对字符串调用成员函数format()

myzjeezk  于 2023-02-20  发布在  其他
关注(0)|答案(7)|浏览(158)

我用的是Laravel 5.3
articles中有一个字段expired_at

public function store(Request $request)
{
    $data=[
         'expired_at'=>Carbon::now()->addDays(30)->endOfDay()
    ];
    $article=Article::create(array_merge($request->all(),$data));

    return redirect('/artilces');
}

查看:

{{$article->expired_at->format('Y-m-d')}}

错误:
对字符串调用成员函数format()(视图:下载:\wnmp\www\laravel-5 - 3-dev\资源\视图\图片\索引. blade.php)
为什么呢?

ghg1uchk

ghg1uchk1#

Article类中添加以下属性:

/**
 * The attributes that should be mutated to dates.
 *
 * @var array
 */
protected $dates = ['expired_at'];

文件

ki1q1bka

ki1q1bka2#

我觉得就是这样,不会出错

{{ Carbon\Carbon::parse($article->expired_at)->format('Y-m-d') }}
plupiseo

plupiseo3#

如果使用DB::要检索复杂数据,你不能使用mutators。2在这种情况下我使用这个:

{{ date('m-Y', strtotime($hora->Fecha)) }}

或者

{{ date('m-Y', strtotime($hora ?? ''->Fecha)) }}

其中“Fecha”是日期时间值。

kyxcudwk

kyxcudwk4#

在User.php或者你的模型中,这个是什么呢?

protected $casts = [
   'last_active_at' => 'datetime',
];
eqqqjvef

eqqqjvef5#

使用时,在模型的$dates上声明的字段。
试试这个:

optional($article->expired_at)->format('Y-m-d')
vh0rcniy

vh0rcniy6#

您需要将expired_at转换为Eloquent Model中的datetime。出现此错误是因为您正在对String而不是DateTime示例调用format函数。

r6vfmomb

r6vfmomb7#

Laravel 10更新

Laravel 10中的$dates属性已被弃用并删除。您应改用$casts属性。例如:

protected $casts = [
  'expired_at' => 'datetime',
];

相关问题