【发布时间】:2014-03-08 02:36:09
【问题描述】:
我正在与 Eloquent 建立一对多关系。
我想通过使用他们最后发布的 DateTime (created_at) 来订购我的用户,但我不知道如何进行这项工作。
表用户:
id | name
1 | John
2 | Doe
3 | Foo
4 | ...
表帖:
id | title | body | user_id | created_at
1 | Title 1| Body1 | 1 | 2014-03-06 14:00:00
2 | Title 2| Body2 | 1 | 2014-03-04 14:00:00
3 | Title 3| Body3 | 2 | 2014-03-03 14:00:00
4 | Title 4| Body4 | 3 | 2014-03-05 14:00:00
所需的最终输出示例:
name | title | created_at
John | Title 1 | 2014-03-06 14:00:00
Foo | Title 4 | 2014-03-05 14:00:00
Doe | Title 3 | 2014-03-03 14:00:00
我离得越近:
$users = User::with(['posts' => function($query){
$query->orderBy('created_at', 'desc');
}])->get();
但是这段代码提取了每个用户的所有帖子,我只想要最后一个。
你能帮帮我吗?谢谢。
更新:我终于找到了我要找的东西:检索用户的最后一篇文章并按升序对用户进行排序(最后一篇文章的时间戳)。随时改进此查询!
$users = DB::table('posts')
->join('users', 'posts.user_id', '=', 'users.id')
->select(DB::raw('posts.id, posts.user_id, MAX(created_at) as created_at'))
->groupBy('posts.user_id')
->orderBy('created_at', 'asc')
->get();
【问题讨论】:
标签: laravel laravel-4 eloquent