1

我如何使用 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 格式。

4

2 回答 2

2

我建议您使用 Eloquent 模型及其附带的功能:

class Post extends Eloquent {
    protected $appends = array('created_at_for_humans');

    public function getCreatedAtForHumansAttribute(){
        return Carbon::parse($this->attributes['created_at'])->diffForHumans();
    }
}

属性访问器返回格式化的日期,因为它已在$appends属性中注册,所以将包含在数组/JSON 转换中。

您的查询看起来几乎相同:

$posts = Post::where('author_id', '=', $id)
             ->where('created_at', '<', $date)
             ->orderBy('created_at', 'desc')
             ->paginate(10);
于 2015-01-07T09:34:52.343 回答
1

尝试:

foreach ($posts as &$post) {
   $post->created_at = Carbon::parse($post->created_at)->diffForHumans();
}

return

于 2015-01-07T04:56:00.557 回答