如题,已经在模型中定义了属性转换如下:

protected $casts = [
    'start_time' => 'datetime:Y-m-d',
    'end_time' => 'datetime:Y-m-d',
];

但是在 blade 中调用时无效:

{{ $user->start_time }}

最终显示:

其实这是 laravel 的设计机制,属性转换只有在模型被序列化为数组或者json格式时才生效。

我们可以通过访问器来解决这个问题,在模型中定义如下代码:

public function getStartTimeFormattedAttribute(){
  return $this->start_time->format('Y-m-d');
}

然后在 blade 中调用:

{{ $user->start_time_formatted }}

其实,我们也可以直接在 blade 中链式调用 carbon 的方法的,不需要在模型中定义访问器,而是直接使用下面的方式:

{{ $user->start_time->format('Y-m-d') }}