使用Carbon进行Laravel查询

时间:2015-01-07 04:35:12

标签: php facebook laravel laravel-4 php-carbon

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

2 个答案:

答案 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