2017-03-17 76 views
3

我需要OrderBy与收藏专栏。Laravel:orderBy与收藏专栏

我需要orderBy(updated_at, 'desc')当前登录用户拥有的所有帖子。

这里是我的代码:

$posts = auth()->user()->posts->sortByDesc('updated_at'); 

下面是用户模式:

class User extends Authenticatable 
{ 
    public function posts() 
    { 
     return $this->hasMany(Post::class); 
    } 
} 

它不返回任何错误,也没有排序!

任何帮助将不胜感激。

P.S:

我知道我可以做到这一点:

$posts = Post::where('user_id', auth()->user()->id)->orderBy('updated_at', 'desc')->get(); 

但是我希望做同样的事情的集合。

+1

尝试使用' - >最新的()',而不是' - > sortByDesc ('updated_at');'同样的东西 – Onix

+0

'方法最新不存在.' –

+0

你需要'使用Illuminate \ Database \ Query \ Builder' – Onix

回答

2

获得职位,你这是怎么样用SQL:

$posts = auth()->user()->posts()->orderBy('updated_at', 'DESC'); 

而且含藏品:

$posts = auth()->user()->posts->sortByDesc('updated_at'); 

我测试了第二个,它的工作原理与我一样。

0

尝试添加以下到您的用户模型

public function posts_sortedByDesc(){ 
     return $this->hasMany(Post::class)->sortByDesc('updated_at'); 
    } 

然后通过调用posts_sortedByDesc代替posts

1

@devk是对的。我在第一篇文章中写的是正确的。

问题出在DataTables的视图中。

它需要这一行添加到数据表的选项:

"order": [[ 5, 'desc' ]], // 5 is the `updated_at` column (the fifth column in my case) 

因此,这是工作的罚款:

$posts = auth()->user()->posts->sortByDesc('updated_at');