如何使用Carbon在其帖子上输出created_at
人类可读的查询,例如Facebook的1 min ago
。问题是我总是将查询结果直接返回到浏览器中输出。我如何整合它,而不是2015-07-01 12:32:43
,而不是1 min ago
或其他人类可读和好的。
在我的控制器中:
$posts = DB::table('posts')
->where('author_id', '=', $id)
->where('created_at', '<', $date)
->orderBy('created_at', 'desc')
->paginate(10);
return $posts;
然后它将返回所有帖子的json格式。
答案 0 :(得分:2)
我建议您使用Eloquent模型及其附带的功能:
class Post extends Eloquent {
protected $appends = array('created_at_for_humans');
public function getCreatedAtForHumansAttribute(){
return Carbon::parse($this->attributes['created_at'])->diffForHumans();
}
}
此attribute accessor返回格式化日期,因为它已在$appends
中注册,所以该属性将包含在数组/ JSON转换中。
您的查询看起来几乎相同:
$posts = Post::where('author_id', '=', $id)
->where('created_at', '<', $date)
->orderBy('created_at', 'desc')
->paginate(10);
答案 1 :(得分:1)
尝试:
foreach ($posts as &$post) {
$post->created_at = Carbon::parse($post->created_at)->diffForHumans();
}
之前return