在laravel 5.4中调用字符串上的成员函数diffForHumans()

时间:2017-05-29 06:39:42

标签: php laravel laravel-5 laravel-5.4

在我使用的laravel模型中

  

getTimeagoAttribute()

在这个函数中我试图得到那个timeago值例如当我在11.30发布一个评论时现在时间是12:30意味着我想在1小时前显示在评论附近并且我的函数中的代码是

public function getTimeagoAttribute()
    {
        $mytime = \Carbon\Carbon::now();
        $date = $mytime->toDateTimeString()->diffForHumans();
        return $date;
    }

当我尝试运行代码时,它会向我显示错误Call to a member function diffForHumans() on string这是实现我想要的正确方法,还是有任何其他方法来实现这一点。

这是我在刀片视图中实现的方式

<span class="pull-right">{{$review->timeago}}</span> 

请帮助我实现这个目标..

4 个答案:

答案 0 :(得分:2)

你应该这样:

return \Carbon\Carbon::now()->diffForHumans();

$mytime->toDateTimeString()将返回不是Carbon对象

的字符串

答案 1 :(得分:0)

假设您使用默认时间戳,则可以使用created_at字段。

public function getTimeAgoAttribute()
{
    return $this->created_at->diffForHumans();
}

一样使用它
<span class="pull-right">{{ $review->timeAgo }}</span> 

答案 2 :(得分:0)

我认为你所做的是从模型中调用更新/创建的时间,然后调用diffForHumans()函数,就像下面的代码一样:

MyPostModel::all()->first()->updated_at->diffForHumans();

答案 3 :(得分:-1)

使用以下代码

  

返回   碳:: createFromTimestampUTC(的strtotime($日期)) - &GT; diffForHumans();

   function timeAgo($date)
   {
        return Carbon::createFromTimestampUTC(strtotime($date))->diffForHumans();
   }

它与当前日期时间进行比较,并为您提供结果