Laravel 同一属性的增变器

Laravel mutator for same attribute

我的模型中的属性可以超过 1 个 getter 吗?

我有一个日期,我想将它作为日期和 Carbon 的人类可读格式两种形式使用

现在如果我做这个:

将 UTC 转换为人类可读格式

public function getCreatedAtAttribute($date){

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

}

我以人类可读的方式获得它。

如何获取正常日期?

如果您想获得人类可读的日期以及正常日期,那么您可以在模型中添加 created_at 列作为

protected $dates = ['created_at'];

这给了我们碳日期实例并获得人类可读的日期,你可以这样做

$model_instance->created_at->diffForHumans();

答案更新

您可以通过添加自定义访问器获取不同格式的 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 形式中,前提是您已添加适当的访问器。