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

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

id     title     body     bind_category_id            created_at
1     标题1  内容1              1                        2019年11月18日13:45:56
2     标题2  内容2              1                        2019年11月18日13:45:57
3     标题3  内容3              2                        2019年11月18日13:45:58
4     标题4  内容4              3                        2019年11月18日13:45:59
5     标题5  内容5              3                        2019年11月18日13:45:60
6     标题6  内容6              3                        2019年11月18日13:45:61

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

id     title     body     bind_category_id            created_at
1     标题1  内容1              1                        2019年11月18日13:45:56
2     标题2  内容2              1                        2019年11月18日13:45:57
3     标题3  内容3              2                        2019年11月18日13:45:58
5     标题5  内容5              3                        2019年11月18日13:45:60
6     标题6  内容6              3                        2019年11月18日13:45:61
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 17

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

4年前 评论

请了解一下 Mysql 的 having 关键字

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

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

4年前 评论

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

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

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

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

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

4年前 评论

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

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!