Мутатор даты Laravel 5

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

В настоящее время:

public function getCreatedAtAttribute($date)
{
    return $date->diffForHumans();
}

Но я получаю:

Call to a member function diffForHumans() on string

Я просто хочу использовать функции Carbon на созданной дате, но всегда получаю эту ошибку.

Любая помощь?


person Lovelock    schedule 15.08.2015    source источник
comment
Вы не хотите использовать функцию даты php?   -  person aldrin27    schedule 15.08.2015
comment
Добавьте created_at в массив $dates вашей модели.   -  person zeratulmdq    schedule 15.08.2015


Ответы (2)


Это должно помочь:

public function getCreatedAtAttribute()
{
   return $this->attributes['created_at']->diffForHumans();
}

В любом случае, сделав это, вы сделаете невозможным получение исходного значения. Поэтому я предлагаю вам просто создать геттер для атрибута с другим именем, например:

public function getHumanCreatedAtAttribute()
{
   return $this->created_at->diffForHumans();
}

а затем использовать его как

$mode->human_created_at;
person jedrzej.kurylo    schedule 15.08.2015

Сделайте следующее в своем BaseModel:

public function getDates()
{
    return ['created_at', 'updated_at'];
}

Это гарантирует, что поля created_at и updated_at будут рассматриваться как объекты Carbon.

person user2094178    schedule 15.08.2015