2017-05-29 85 views
0

在我laravel模型我使用调用一个成员函数diffForHumans()在字符串中laravel 5.4

getTimeagoAttribute()

这个功能我正在试图让该TIMEAGO价值例如,当我发布一个审查在11.30和现在的时间是12:30意味着我要显示1小时前我的函数内部审查和代码附近的

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

当我尝试运行第E码它告诉我一个错误Call to a member function diffForHumans() on string是实现我想要什么或者是否有其他方法来达致这这是正确的方式..

这就是我实现我的刀片观点

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

请帮助我出去来实现这个..

回答

2

你应该这样说:

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

$mytime->toDateTimeString()将返回一个字符串不是Carbon对象

+1

呀谢谢巴拉它工作正常,但每当我认为它张贴展示2天以前 – Karthiga

+0

时间因此未改变了,因为你正在从'now'时间..所以它永远是1秒d前。尝试执行此操作'返回Carbon :: createFromDate($ date) - > diffForHumans();' –

0

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

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

使用它像

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

使用下面的代码,

回报 碳:: createFromTimestampUTC(的strtotime($日期)) - > diffForHumans();

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

它与当前日期时间进行比较,并给你结果

+0

downvote的原因将有助于学习。谢谢 – Nandakumar

0

我觉得你做的是调用它更新的时间/从模型创建,然后调用diffForHumans()函数,就像下面的代码:

MyPostModel::all()->first()->updated_at->diffForHumans(); 
相关问题