Laravel 分组获取数据后 每个分组获取 2 条最新的数据

需求:
每个分组的分类 获取 2 条最新的数据
数据库:

id     title     body     bind_category_id            created_at
1     标题1  内容1              1                        2019111813:45:56
2     标题2  内容2              1                        2019111813:45:57
3     标题3  内容3              2                        2019111813:45:58
4     标题4  内容4              3                        2019111813:45:59
5     标题5  内容5              3                        2019111813:45:60
6     标题6  内容6              3                        2019111813:45:61

实现后 获取到的数据 (也就是根据 bind_category_id 分组后,每组去除 最新更新的数据)

id     title     body     bind_category_id            created_at
1     标题1  内容1              1                        2019111813:45:56
2     标题2  内容2              1                        2019111813:45:57
3     标题3  内容3              2                        2019111813:45:58
5     标题5  内容5              3                        2019111813:45:60
6     标题6  内容6              3                        2019111813:45:61
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 17

:joy: 感觉自己的 mysql 好薄弱

5年前 评论

请了解一下 Mysql 的 having 关键字

5年前 评论
liuhaiqiang999 (楼主) 5年前
Category::query()
    ->with(['post' => function ($q) {
        return $q->orderBy('created_at')->limit(2);
    }])
    ->get();
5年前 评论
liuhaiqiang999 (楼主) 5年前
liuhaiqiang999 (楼主) 5年前
liuhaiqiang999 (楼主) 5年前
飞飞鱼 5年前
飞飞鱼 5年前
ㅤㅤ (作者) 5年前

select
from table a
where 2>(select count(
) from table where bind_category_id=a.bind_category_idand created_at>a.created_at)
order by a.bind_category_idand ,a.created_at desc

5年前 评论

你可以看一下这个博客,可能会对你有所帮助。
https://n3xtchen.github.io/n3xtchen/postgr...

5年前 评论
liuhaiqiang999 (楼主) 5年前

大概是这样,你要按照自己的改一下。

Category::query()
    ->with(['articles' => function ($q) {
        return $q->orderBy('created_at')->limit(2);
    }])
    ->get();
5年前 评论
李小明 2年前

SELECT from test where id not in(select MAX(id) from test GROUP BY bind_category_id HAVING count() >1)

5年前 评论

@青风百里 这个方法是错误的。

5年前 评论