Laravel错误:调用字符串上的成员函数format()

Laravel错误:调用字符串上的成员函数format(),laravel,Laravel,我使用的是Laravel5.6,我想在我的实用新型中做一个这样的存取器 public function getRekomtekDateAttribute($value) { return $value->format('d-m-Y'); } 但是当我调用{{$utility->rekomtek_date}}时,错误如标题所示 我在同一型号中添加了这一行,与中相同,但仍然没有运气 /** * The attributes that should be mutated to dat

我使用的是Laravel5.6,我想在我的实用新型中做一个这样的存取器

public function getRekomtekDateAttribute($value)
{
    return $value->format('d-m-Y');
}
但是当我调用
{{$utility->rekomtek_date}}
时,错误如标题所示

我在同一型号中添加了这一行,与中相同,但仍然没有运气

/**
 * The attributes that should be mutated to dates.
 *
 * @var array
 */
protected $dates = [
    'rekomtek_date'
];

我不知道怎么了。因为我使用的是Laravel5.3,所以这种情况总是发生--'

这是因为您试图在字符串中使用format()。 你应该做:

use Carbon\Carbon;
...
public function getRekomtekDateAttribute($value)
{
    return Carbon::parse($value)->format('d-m-Y');
}

不应将
$value
传递给getter函数,请按如下方式使用它:

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

您的
rekomtek_日期是否为数据库中的日期类型?在格式化之前尝试转储
$value
,确保它是碳类型。是的,我正在使用
$table->date('rekomtek_date')在my Migration中,您可以先阅读文档中的一些内容:将字段添加到$dates数组中,然后将其强制转换为Carbon实例。还有一些问题,这不是一个解决方案。@navok是的,但是当试图访问对象时,转换为碳实例会生效。例如,$user->my_date将返回一个碳实例。但是当在访问器中检索时,它还不是一个碳实例。他的用法是错误的,看看我的答案。它100%有效。我已经用过很多次了。但是为什么在定义访问器部分,它说我们用$value定义访问器呢variable@BangFady是的,它在字符串类型上工作得很好,但是对于日期,当您访问字段的父字段时,会发生到碳的转换。因此,您的错误并不是说
$value
为空或null,而是说它实际上是String类型,并且String没有格式方法。