使用Eloquent对数据进行排序

Pre*_*ake 12 sorting laravel

我是laravel的新手(从CI换掉),雄辩的ORM在某些方面仍然有点神秘!

这是我的问题:

我想使用Eloquent从我的数据库中对数据进行排序.

我有一个表和一个表评论(帖子有很多评论和评论属于帖子)

每条评论都有一个时间戳(=> created_at字段),我想订购如下内容:

(我们在profil页面上,所以$ user-> id是用户的id(显然))

我希望该用户发表评论的帖子中的每个帖子,并通过评论的created_at字段对所有帖子进行排序

我真的想完全使用Eloquent,或者至少是流利的,我不知道这样做的正确方法.

我希望我很清楚,谢谢你的时间!

小智 19

我刚刚开发的项目遇到了同样的问题.在我看到的usort()任何地方,我都看到了或者uasort()作为解决这个问题的建议方法.(Collection::sort() 只是一个包装器uasort()),但这并不满足我,因为为什么我会使用PHP来排序SQL应该为我做一个ORDER BY子句?我最终使用getXXXAttribute()方法以这种方式实现它:

class Post extends Eloquent {
    public function comments()
    {
        return $this->hasMany('Comment');
    }

    public function getCommentsAttribute()
    {
        $comments = $this->comments()->getQuery()->orderBy('created_at', 'desc')->get();
        return $comments;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • 解决方案似乎已经过时了.不知道它们实际实现的时间,但您可以扩展与查询函数的关系.所以在这种情况下你可以写`return $ this-> hasMany('Comment') - > orderBy('created_at','desc')`.[credt](http://stackoverflow.com/questions/18143061/laravel-orderby-on-a-relationship) (2认同)