如何在Laravel 5.2中编写关于“按更新时间排序”的查询?

时间:2016-04-20 18:33:20

标签: php laravel

我使用的是Laravel 5.2 如何撰写关于“按update time排序”的查询?

有两个表格usersarticles,它们之间存在“一对多”关系,
我想查询用户的姓名和他/她的文章标题,并按文章的update time进行排序 像这样:

username    article titles                       update time
Lily        aaa-title-01;aaa-title-02;...        2016-04-20 12:00:00
Lucy        bbb-title-01;bbb-title-02;...        2016-04-19 12:00:00
Jim         ccc-title-01;ccc-title-02;...        2016-04-18 12:00:00

update time是用户最新文章的更新时间,例如:

第一个,username是Lily,update time2016-04-20 12:00:00,它表示Lily的最新文章已在2016-04-20 12:00:00更新。
第二个,它代表露西的最新文章在2016-04-19 12:00:00更新 莉莉的最新文章比露西的晚,所以,莉莉是第一个,露西是第二个,而......,吉姆是第三个。

我写了这样的查询:

$articles =User::whereHas('articles', function($query) {
            $query->where('status', 1); //status is 1 or 0, 1 is published,0 is not published.
        })->get();

此查询可以获取用户和他/她的文章,但无法通过上面的update time订购,该怎么做?

1 个答案:

答案 0 :(得分:0)

只需在查询中添加orderBy,您就应该看起来不错。

$articles =User::whereHas('articles', function($query) {
    $query->where('status', 1)->orderBy('update_time', 'desc');
})->get();