2016-10-27 3 views
0

Могу ли я иметь более 1 геттера для моего атрибута в моей модели.Laravel mutator для того же атрибута

У меня свидание, и я хотел бы иметь его в обоих вариантах в качестве даты и в читаемом формате с Carbon

Теперь, если я сделать это:

преобразования UTC в удобочитаемом формате

public function getCreatedAtAttribute($date){ 

Carbon::setLocale('de'); 
return Carbon::createFromFormat('Y-m-d H:i:s', $date)->diffForHumans(); 

}

Я получаю в человеческой читаемой.

Как получить нормальную дату?

ответ

1

Если вы хотите получить читаемую дату человека и так же, как нормальные даты, то вы можете добавить столбец created_at в модели, как

protected $dates = ['created_at']; 

, который дает нам экземпляр даты углерода и получить удобочитаемую дату вам может сделать это как

$model_instance->created_at->diffForHumans(); 

ANSWER UPDATE

Вы можете получить createdAt дата в различных форматах путем добавления пользовательских аксессоров:

class ModelName extends Model { 
    protected $appends = ['newtime','difftime']; 

    public function getNewtimeAttribute(){ 
     return Carbon::parse($this->created_at)->diffForHumans; 
    } 

    public function getDifftimeAttribute(){ 
     return Carbon::now()->diff(Carbon::parse($this->created_at)); 
    } 
} 

Любые атрибуты, перечисленные в $appends собственности будут автоматически включены в массив или JSON форме модели, при условии, что вы добавили соответствующий аксессор.

+0

OK, который работает .... но он возвращает дату, как в таблице DB (MySql), и есть ли способ получить локализованную дату .... как установить, что углерод будет глобальным – lewis4u

+0

, вы можете обратиться к эта ссылка для установки экземпляра углерода глобально http://stackoverflow.com/a/25939511/4584028 –