我使用的是Laravel 5.2
如何撰写关于“按update time
排序”的查询?
有两个表格users
和articles
,它们之间存在“一对多”关系,
我想查询用户的姓名和他/她的文章标题,并按文章的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 time
是2016-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
订购,该怎么做?
答案 0 :(得分:0)
只需在查询中添加orderBy
,您就应该看起来不错。
$articles =User::whereHas('articles', function($query) {
$query->where('status', 1)->orderBy('update_time', 'desc');
})->get();