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

zwl*_*619 19 php laravel

我正在使用Laravel 5.3.

expired_at 表格中有一个字段articles:

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

    return redirect('/artilces');
}
Run Code Online (Sandbox Code Playgroud)

视图:

{{$article->expired_at->format('Y-m-d')}}
Run Code Online (Sandbox Code Playgroud)

错误:

在字符串上调用成员函数format()(视图:D:\ wnmp\www\laravel-5-3-dev\resources\views\artiles\index.blade.php)

为什么?

Ami*_*pta 41

在您的Article课程中添加以下属性:

/**
 * The attributes that should be mutated to dates.
 *
 * @var array
 */
protected $dates = ['expired_at'];
Run Code Online (Sandbox Code Playgroud)

文件

  • 如果您通过“Eloquent”构建查询,则“$dates”可以工作。但是,如果您使用“查询生成器”,那么它不起作用,您必须使用@NazmulHazan 给出的解决方案。我还没有尝试过使用“原始查询”,但是,我确信它也不适用于该查询。 (3认同)

Naz*_*san 25

我认为这是方法.它不会抛出错误

{{ Carbon\Carbon::parse($article->expired_at)->format('Y-m-d') }}
Run Code Online (Sandbox Code Playgroud)

  • 这是唯一的工作方式。接受的答案不起作用我不知道为什么 (3认同)

Jav*_* dc 5

如果使用DB ::来检索复杂数据,则不能使用增变器。在这种情况下,我使用以下方法:

{{ date('m-Y', strtotime($hora->Fecha)) }}
Run Code Online (Sandbox Code Playgroud)

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


Jam*_*son 5

User.php 或您的模型中的这个怎么样:

protected $casts = [
   'last_active_at' => 'datetime',
];
Run Code Online (Sandbox Code Playgroud)