首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Laravel查询中使用Carbon

在Laravel查询中使用Carbon
EN

Stack Overflow用户
提问于 2015-01-07 04:35:12
回答 2查看 2.4K关注 0票数 1

我如何使用碳输出created_at人类可读的查询,比如Facebook的1 min ago在它的帖子上。问题是,我总是将查询结果直接返回到浏览器中输出。我如何集成它,而不是2015-07-01 12:32:43,它将是1 min ago或其他人类可读性和良好的。

在我的控制器里:

代码语言:javascript
复制
    $posts = DB::table('posts')
                ->where('author_id', '=', $id)
                ->where('created_at', '<', $date)
                ->orderBy('created_at', 'desc')
                ->paginate(10);

    return $posts;

然后,它将返回所有帖子的json格式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-07 09:34:52

我建议您使用一个雄辩的模型及其附带的特性:

代码语言:javascript
复制
class Post extends Eloquent {
    protected $appends = array('created_at_for_humans');

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

这个属性存取器返回格式化日期,因为它是在$appends中注册的,因此属性将包含在数组/JSON转换中。

您的查询看起来几乎是一样的:

代码语言:javascript
复制
$posts = Post::where('author_id', '=', $id)
             ->where('created_at', '<', $date)
             ->orderBy('created_at', 'desc')
             ->paginate(10);
票数 2
EN

Stack Overflow用户

发布于 2015-01-07 04:56:00

尝试:

代码语言:javascript
复制
foreach ($posts as &$post) {
   $post->created_at = Carbon::parse($post->created_at)->diffForHumans();
}

return之前

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27812450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档