Ошибка Laravel: вызов в формате функции участника() в строке

Я использую 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')}}

Ошибка:

Call to a member function format() on string (View: D:\wnmp\www\laravel-5-3-dev\resources\views\artiles\index.blade.php)

Почему?

Ответ 1

В вашем классе Article добавьте следующее свойство:

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

Docs

Ответ 2

Я думаю, что так оно и есть. Он не будет вызывать ошибку

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

Ответ 3

Если вы используете DB:: для получения сложных данных, вы не можете использовать мутаторы. В этой ситуации я использую это:

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

где "Fecha" - это значение datetime.