模型列日期格式

时间:2017-08-03 08:22:42

标签: date laravel-5 model format

我修改了我的模型日期属性以计算生日,但是现在当我的表单中加载日期时(我使用表格集合)我得到它像1979-07-17 00:00:00右输出应该是1979-07-17

protected $dates = ['geburtstag'];

   public function age()
    {
        return $this->geburtstag->diffInYears(Carbon::now());
    }

我尝试从

这样的模型进行修改

protected $geburtstagFormat = 'Y-m-d';

但没有帮助。

在这种情况下我做错了什么

3 个答案:

答案 0 :(得分:1)

另一种方法 首先解析$ this-> geburtstag-> diffInYears(Carbon :: now())

$createdAt = Carbon::parse($this->geburtstag->diffInYears(Carbon::now()));

然后你可以使用

$suborder['payment_date'] = $createdAt->format('M d Y');

答案 1 :(得分:1)

如果您不想存储出生时间,则应将数据库中的数据类型更改为date,而不是timestampdatetime。这将自动解决问题,因为当您在视图上调用属性时,这将精确地提取它在数据库中的显示方式。否则,如果要保持数据库不变,则必须在模型中定义mutator,如下所示:

    public function getGeburstag($value){
        return Carbon::parse($value)->toDateString();
    }

这会将geburtag属性的原始值替换为Y-m-d格式的值。

答案 2 :(得分:1)

为什么不使用$model->geburtstag->format('Y-m-d')

您还可以在模型中创建变体,如:

public function getGeburstagDateAttribute($value) {
    return $this->geburtstag->format('Y-m-d');
}

并像这样使用它:

$model->geburtstag_date // outputs geburtstag date in 'Y-m-d' format

要在模型中设置日期格式,请在模型中使用protected $dateFormat = 'Y-m-d';