2017-05-29 84 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(); 
相關問題