Laravel 5:在 DB 中设置或获取日期格式

Art*_*ach 2 php date laravel php-carbon laravel-5

我在理解 Laravel 如何处理日期和碳时遇到了麻烦。我有一个模型,它有一个名为published_at 的特殊字段(它是da DATE 字段)。当我保存对象的实例时,我希望 Laravel 使用 carbon 转换该字段。

这是我的模型:

<?php

namespace App;

use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;


class Addon extends Model
{

// ...

protected $dates = [

    'published_at'
];

// ....

/**
 * Set the published_at date format
 *
 * @param $date
 * @return string
 */
public function setPublishedAtAttribute($date)
{
    $this->attributes['published_at'] = Carbon::createFromFormat('d/m/Y', $date);
}

// ....
}
Run Code Online (Sandbox Code Playgroud)

因此,据我所知,published_at 字段现在应该使用 d/m/Y 格式保存为碳的实例。但是,它在数据库中保存为 mm-dd-yyyy。

最后,我不在乎它是如何保存到数据库中的,所以这就是为什么我想创建一个getPublishedAtAttribute并以我想要的格式检索它。那也没有用。

我想要的只是 Laravel 将其格式化为 d/m/Y。没有我必须做的事情,比如{{ $addon->published_at->format('d/m/Y') }}每当我展示它时。

顺便说一句:我想同样的事情created_atupdated_at。任何想法我做错了什么?

Laravel 版本:5.3.31

Sae*_*rez 5

我建议你不要乱用这样的日期格式,而是创建一个这样的访问器..

public function getFormattedPublishedAtAttribute() {
    return $this->published_at->format('d/m/Y');
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以使用默认日期,也可以使用..

$model->formattedPublishedAt;
Run Code Online (Sandbox Code Playgroud)