我使用的是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() (View: D:'wnmp'www'laravel-5-3-dev'resources'views' articles 'index.blade.php)
为什么?
在您的Article
类中添加以下属性:
From Laravel 10.x
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $casts = [
'expired_at' => 'datetime'
];
Laravel 10升级
在Laravel 10之前。X可以用
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['expired_at'];
文档
我觉得应该这样。它不会抛出错误
{{ Carbon'Carbon::parse($article->expired_at)->format('Y-m-d') }}
如果使用DB::检索复杂数据,则不能使用mutator。在这种情况下,我使用这个:
{{ date('m-Y', strtotime($hora->Fecha)) }}
或
{{ date('m-Y', strtotime($hora ?? ''->Fecha)) }}
其中"Fecha"为日期时间值
在User.php或你的模型中如何:
protected $casts = [
'last_active_at' => 'datetime',
];
Laravel 10更新
$dates
属性在Laravel 10中已被弃用并移除。相反,您应该使用$casts
属性。例如:
protected $casts = [
'expired_at' => 'datetime',
];
With,在模型的$dates上声明的字段。
试试这个:<>之前可选(文章-> expired_at)——>格式(Y-m-d)
您需要将expired_at
转换为Eloquent Model
中的datetime。您得到这个错误,因为您正在调用format
函数的字符串,而不是DateTime实例。