当前位置: 首页 > 知识库问答 >
问题:

分页laravel查询结果

商鸿哲
2023-03-14

我有两种型号:

  1. 用户

用户有很多帖子。帖子有很多评论,评论属于帖子。这很简单。

现在我想加载所有的帖子的认证用户与它的评论,如果帖子有评论今天创建。如果帖子今天没有评论,它将不会被加载。这些帖子也将被分页。如何建立查询在laravel雄辩?

我试过这样的方法:

Auth::user()->posts->load(['comments' => function($query) {
                $query->where('created_at',Carbon::today());
            }]);

共有1个答案

颜霖
2023-03-14

查询中的问题是您已经在执行它了。检查此部分:

Auth::user()->posts->...
            ^^^^^^^^

您正在将关系作为属性访问。执行此操作时,查询已在执行中。您需要做的是在执行查询之前限制结果。要做到这一点,访问关系,但作为一个函数,通过这种方式,您将收到查询生成器的实例,以便在执行查询之前应用所有约束(使用-

$posts = Auth::user()->posts()->whereHas(['comments' => function($query) {
        $query->where('created_at', '>=', today());
    }])
    ->get();

在上面的代码中,您将收到今天至少有一条评论的所有帖子。但是你还没有收到他们的评论。为此,需要使用with()方法加载关系。

$posts = Auth::user()->posts()->whereHas('comments', function($query) {
        $query->where('created_at', '>=', today());
    })
    ->with('comments') // <--
    ->get();

应该这样做。但是,如果需要对元素进行分页,请将get()paginate()方法交换:

$posts = Auth::user()->posts()->whereHas('comments', function($query) {
        $query->where('created_at', '>=', today());
    })
    ->with('comments')
    ->paginate(15); // <---

 类似资料:
  • 使用数据库的应用程序,多数情况下都需要使用 “分页” 这个功能。尤其是在 Web 应用程序中,后端的分页查询尤其的普遍。 在以往的使用经验中,一个分页查询,除了能获取到一个列表外,我们通常需要如下几个信息才能在客户端显示出一个完整的翻页条。 当前页数 -- 第几页 页大小 -- 每页有多少条记录 总页数 -- 一共多少页 总记录数 -- 如果不分页,一共有多少条记录 当我们获得了这四条信息后,对于

  • limt 分页查询 查询前3条记录 分页公式: (offset - 1) * limit SELECT name FROM `student` LIMIT 0, 3; Student.findAll( { attributes:['name'], // 当前页 offset:0, // 每页显示的条数 limit:3 }) 分页案例 router.ge

  • 在使用 hyperf/database 来查询数据时,可以很方便的通过与 hyperf/paginator 组件配合便捷地对查询结果进行分页。 使用方法 在您通过 查询构造器 或 模型 查询数据时,可以通过 paginate 方法来处理分页,该方法会自动根据用户正在查看的页面来设置限制和偏移量,默认情况下,通过当前 HTTP 请求所带的 page 参数的值来检测当前的页数: 由于 Hyperf 当

  • 这边用laravel做的移动端接口,有个业务需求: 加载文章列表,首页显示10条数据,上划再加载时,每次加载5条数据, 如何实现? 一个接口能否实现? 有没有必要分两个接口, 一个专用来查10条,另一个对排除这10条数据的其它数据进行每页5条数据的分页

  • 本文向大家介绍sqlserver分页查询处理方法小结,包括了sqlserver分页查询处理方法小结的使用技巧和注意事项,需要的朋友参考一下 sqlserver2008不支持关键字limit ,所以它的分页sql查询语句将不能用MySQL的方式进行,幸好sqlserver2008提供了top,rownumber等关键字,这样就能通过这几个关键字实现分页。 下面是本人在网上查阅到的几种查询脚本的写法:

  • 问题内容: 我有连接3个表的SQL查询,一个表只是将其他两个表连接起来的多对多表。我使用Spring JDBCResultSetExtractor将ResultSet转换成我的Objects,看起来像这样: ResultSetExtractor实现如下所示: 无需分页即可正常工作。 但是,我需要对这些结果进行分页。我通常的做法是将其添加到查询中,例如: 但是,由于此查询具有联接,因此当我限制结果数