在模型中添加碳以用于自定义时间戳

时间:2016-09-25 17:15:43

标签: php laravel timestamp php-carbon

我在数据库中创建了自己的时间戳(在updated_at和amp_ created_at旁边),并用播种器填充。示例数据如下所示:

| id  |user|start_at (my timetable)| |   created_at        | updated_at
| 194 | 47 | 2015-01-21 00:00:00 | | 2016-09-25 16:48:48 | 2016-09-25 16:48:48 |

我也加入了我的模型:

public function getCreatedAtAttribute($date)
{
    return Carbon::createFromFormat('Y-m-d H:i:s', $date);
}

public function getUpdatedAtAttribute($date)
{
    return Carbon::createFromFormat('Y-m-d H:i:s', $date);
}

public function getStartAtAttribute($date)
{
    return Carbon::createFromFormat('Y-m-d H:i:s', $date);
}

现在我尝试使用我的控制器:

$val->updated_at->diffForHumans();  // works
$val->created_at->format('d M Y'); // works

$val->start_at->format('d M Y'); // doesn't work

当我var_dump时:

start_at:
 public 'date' => string '2016-10-12 00:00:00.000000' (length=26)
 public 'timezone_type' => int 3
 public 'timezone' => string 'UTC' (length=3)

created_at:
  +"date": "2016-09-25 16:48:48.000000"
  +"timezone_type": 3
  +"timezone": "UTC"

更新:现在我添加了protected $dates = ['start_at']

dd($val->start_at); // gives '2014-08-03 00:00:00'
dd($val->start_at->format('d M Y') // fails

错误:

  

发现意外数据。   找不到分隔符号   数据缺失

2 个答案:

答案 0 :(得分:2)

将start_at添加到模型的$ dates属性中。您需要为created_at或updated_at属性编写自定义setter或getter。

protected $dates = [
        'start_at',
    ];

答案 1 :(得分:0)

提到start_at为carbon inastamce。

在您的模型中添加以下代码

{{1}}

希望这会奏效。