Laravel 4.1:如何对雄辩的渴望关系进行分页?

2023-12-27

存在关于旧的 L3 急切加载分页的问题,而不是使用 eloquent。但我想使用雄辩来获得与分页的热切加载关系。

主要型号:Topic与有一对多关系Posts, 所以那个Topic有很多Posts。我用这个函数获取所有数据:

public function findById($id)
{
    return $this->topic->with('posts', 'posts.user', 'posts.user.profile')
                       ->find($id);
}

后来我循环显示所有结果,但它们没有分页:

@foreach($topic->posts as $post)
... unpaginated content ...
@endforeach

因此,我可以制定一个解决方法,分别选择所有具有主题 $id 的帖子,并使用 ->paginate() 而不是 ->get() ,并且会分页 $pots,

  1. 但是否有可能使用急切加载的关系posts那是分页的吗?怎样才能做到呢?

澄清一下:对热切加载的关系进行分页在某种程度上是一种误解。预先加载的目的是在尽可能少的查询中检索所有关系。如果您想检索 10 个主题,其中所有主题都有 35 个帖子,则只需要两个查询。甜的!

也就是说,对急切的关系进行分页是行不通的。考虑发生急切加载时的两种情况:

  1. 您想要检索并列出主题,并且可能列出每个主题的前五个帖子。伟大的!预加载是完美的。现在,您不想在这样的页面上对急切加载的帖子进行分页,所以这并不重要。

  2. 您加载一个主题,并且想要对该主题的帖子进行分页。伟大的!比较容易做到。但是,如果您已经急切加载all属于该主题的帖子,您可能只是检索到了许多您不需要的额外资源。因此急切加载实际上是hurting you.

那就是说,有两种可能的解决方案:

选项 1:创建一个对 Eloquent 关系进行分页的自定义访问器。

/**
 * Paginated posts accessor. Access via $topic->posts_paginated
 * 
 * @return \Illuminate\Pagination\Paginator
 */
public function getPostsPaginatedAttribute()
{
    return $this->posts()->paginate(10);
}

优点:分页非常容易;不影响正常的帖子关系。
缺点:急切加载帖子不会影响此访问器;运行它将在急切加载的查询之上创建两个附加查询。

选项 2:对急切加载关系返回的 posts 集合进行分页。

/**
 * Paginated posts accessor. Access via $topic->posts_paginated
 * 
 * @return \Illuminate\Pagination\Paginator
 */
public function getPostsPaginatedAttribute()
{
    $posts = $this->posts;

    // Note that you will need to slice the correct array elements yourself.
    // The paginator class will not do that for you.

    return \Paginator::make($posts, $posts->count(), 10);
}

优点:使用急切加载关系;不创建额外的查询。
缺点:无论当前页面如何,都必须检索所有元素(慢);必须手动构建当前页面元素。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 4.1:如何对雄辩的渴望关系进行分页? 的相关文章

  • Laravel 8 图像不显示

    我在用Laravel 8 试图显示来自storage app subject image 路径 但不显示 下面是我的代码blade img src asset subject image data gt subject image alt
  • 如何使用用户代理标头以不同方式检测 Android 手机和 Android 平板电脑?

    对于我的网站 我需要能够区分 Android 平板电脑访问和 Android 手机访问的区别 在将页面发送给用户之前需要对其进行检测 因此不能使用 JavaScript 检查屏幕分辨率 目前我用它来检测 Android 设备 stripos
  • 如何在使用 Piwik 进行分析的页面上显示点击/访问计数器

    我想在主页上显示当天的访问量 该页面由 Piwik 跟踪 如何将 API 与 PHP 结合使用来获取今天的 唯一 访问量和点击量 以便我可以将它们显示在页面上的某个位置 result file get contents http mysit
  • MySQL 启动错误 - 根元素丢失

    我在 Windows Server 2003 R2 上安装 MySQL 大约两个月了 启动时 我们会看到一个错误 显示 高严重性错误 根元素丢失 然后是另一个高严重性错误 显示 在调用 WriteToLog 方法之前必须定义日志文件路径 任
  • 配置 htaccess 以使用 Angular 和 PHP 路由

    我正在尝试使用 Angular 4 和 PHP 路由 但我无法配置它以便同时使用两者 我可以让它与其中之一一起工作 但不能同时与两者一起工作 这是我的文件夹结构 root index html vendor bundle js other
  • 如何使用 PHP 向用户发送每日电子邮件通知?

    我有一个简单的用户注册表单 其中有一个复选框 如果用户的任何项目有活动 用户可以每天收到电子邮件通知 就像 Stack Overflow 有一个 通知 电子邮件受保护 cdn cgi l email protection每天都有新的答案 我
  • 如何在 php 和 mongodb 中使用 findAndModify

    我想将 id 加 1 但运行 php 页面时出现问题 错误是 Fatal error Call to undefined method MongoCollection findAndModify in C wamp www 我的代码是
  • 如何在javascript中显示目录中的所有图像?

    我想在 javascript 的帮助下动态显示目录中的所有图像 我怎样才能做到这一点 我不认为这是可能的 但如果您向 ASP NET 或 PHP 或类似 页面发出 AJAX 请求 它们可以列出文件夹中的文件并将其返回以供 Javascrip
  • 如何按年和月对 WordPress 帖子进行分组?

    我正在尝试创建一个带有后查询并在输出中具有以下结构的函数 2021 January 1 Post Title 2 Post Title March 3 Post Title 2020 May 4 Post Title 这是我到目前为止所做的
  • 如何用PHP读取图像?

    我知道 localfile FILES media tmp name 如果使用 POST 方法 将获取图像 我正在尝试读取与我的代码位于同一目录中的图像 我如何读取它并将其分配给像上面这样的变量 您发布的代码不会读取图像数据 而是读取其文件
  • 新行分隔符不适用于 group_concat 函数

    我有一根绳子 name lastname name2 lastname2 包含数据库表中的值 我想显示它 喜欢 name lastname name2 lastname2 我使用 group concat 函数 它适用于逗号分隔符 但我需要
  • SELECT COUNT() 与 mysql_num_rows();

    我有一个大表 60 数百万条记录 我正在使用 PHP 脚本来浏览该表 PHP 脚本 带分页 加载速度非常快 因为 表引擎是InnoDB因此SELECT COUNT 非常慢并且mysql num rows 不是一个选项 所以我将总行数 我用来
  • 每 n 个字符后插入连字符,末尾不添加连字符

    我在用着chunk split 每第四个字母后添加一个 但它也会在字符串末尾添加一个 这是我不想要的 代码如下 function GenerateKey input generated strtoupper md5 input uniqid
  • PHP 中的 __DIR__ 和 dirname(__FILE__) 有什么区别吗?

    对我来说看起来是一样的 但我不确定 因为有很多项目使用dirname FILE 他们的结果是完全一样的 所以 这没有什么区别 例如 以下两行 var dump dirname FILE var dump DIR 两者都会给出相同的输出 st
  • Laravel 上的图像更新并删除旧图像

    尝试在我的更新控制器中实现更新文章似乎可行 但问题是当我只想更新帖子而不上传图像时 旧的总是会被删除 但这是不应该的 这是我的商店功能 public function store Post post post gt update this
  • 如何编辑 Woocommerce 单一产品元模板中显示的内容?

    我正在为客户做一些工作并使用 wordpress woocommerce 他们要求我将类别移动到我已经完成的单个产品页面上的产品名称下 但他们不希望它打印 类别 类别 1 类别 2 等 他们希望删除 类别 并且它实际上只列出类别的名称 而不
  • SQL 未插入到 Yii 中具有关系的表中

    我正在尝试创建一个用户 但所有值都没有插入到数据库中 Systems user 表与partys 表有关系 因为party id 是sytems user 的主键 没有插入任何内容 甚至没有错误 它只是返回到 创建 页面 这是我的架构 Ta
  • Laravel 调度程序不会自动运行

    我做了一个调度程序 当我用php artisan userRanking有用 这是代码中的Kernel php protected commands App Console Commands UserRanking class protec
  • 性能方面插值(直接插入字符串)VS串联[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • File_get_contents($url): 无法打开流

    我有一个脚本 我使用以下方法读取文件 file get contents urlencode url 我收到此错误 failed to open stream HTTP request failed HTTP 1 0 400 Bad req

随机推荐

  • g++ 不生成任何文件或给出任何输出

    我刚刚开始使用 g 从网站下载了最新版本 并且制作了一个简单的 HelloWorld 程序 include
  • 如何合并两个sql查询?

    我有一个库存表 我想创建一个报告来显示订购商品的频率 库存 表 item id pcs operation apples 100 order oranges 50 order apples 100 delivery pears 100 or
  • Haskell中的floor和truncate有区别吗

    两者之间的功能是否存在差异floor and truncate在哈斯克尔 它们似乎执行相同的功能并且具有相同的类型签名 truncate Integral b RealFrac a gt a gt b floor Integral b Re
  • vuetify v-data-table 样式

    默认情况下 在 v data table 的每个非最后子行之间打印一行 我想修改 css 来更改该行 例如去掉它 最初 在开发人员控制台中 有关 border bottom 的 css 如下所示 theme light v table tb
  • 如何更改wpf TabControl中TabItem的顺序

    我需要更改 TabItem 的顺序 我尝试过删除 插入 但不起作用 void UserControl Loaded object sender RoutedEventArgs e if condition TabControl Items
  • mmap 是否与所有进程共享内存?

    当我这样做时 myProgram h myProgram c struct PipeShm all my fields more struct PipeShm myPipe initialization for all fields str
  • 检测何时创建新的托管线程

    有谁知道是否可以检测在托管环境中何时创建新线程 我想要一个应用程序中所有线程的列表 每个线程的 ID 和名称 我在 Visual Studio 中使用并发可视化工具 它仅显示线程 ID 而不是线程名称 如果您有 20 多个没有名称的线程 则
  • Auth::validate 返回 false Laravel 8

    好吧 我正在尝试使用 Auth validate credenciais 通过 Laravel 进行身份验证它不起作用 public function LoginData Request request request gt validat
  • :force => true 在模式文件中意味着什么

    如果你查看 db schema rb 你会看到类似的内容 create table users force gt true do t 什么是 force gt true mean 来自Rails 文档 http api rubyonrail
  • 计算用箭头和鼠标移动的对象

    我正在使用 openGL 做一个 Maya 模拟器应用程序 一切进展顺利 只有一个麻烦 我无法计算出通过鼠标移动物体的 100 准确度 我使用 3D 坐标中的箭头和屏幕坐标中的箭头的缩放 并将其乘以一些缩放来计算屏幕坐标的 x 和 y 方向
  • TensorFlow 嵌入查找

    我正在尝试学习如何使用 TensorFlow 构建用于语音识别的 RNN 首先 我想尝试 TensorFlow 页面上提供的一些示例模型TF RNN https www tensorflow org versions master tuto
  • 如何为 Chrome 上的每个选项卡获取不同的徽章值?

    我正在尝试做像 adblock 那样的事情 Adblock 计算 广告 的数量并更新徽章值 目前 我尝试对 背景页面 执行某些操作 但它们仅运行一次 并且所有选项卡的徽章值都相同 我无法使用浏览器操作 popup html 因为它仅在单击后
  • 在与其他线串的交叉点处匀称分割线串

    我有一组与其他 LineString 相交的 LineString 我想在这些交叉点将 LineString 分割成单独的线段 我有一个解决方案 但我认为这不是最好的方法 假设我们正在处理一个 LineString gt gt gt imp
  • 基于滚动位置的 div 位置

    我希望我的徽标根据网站上的滚动位置垂直上下滚动 就像默认滚动条指示您在网站上的位置一样 我希望我的徽标也能这样做 当您位于网站页面的顶部时 徽标位于顶部 而当您位于底部时 徽标将位于页面底部的垂直栏中 位于网页左侧 我不知道如何解决这个问题
  • Curl_exec 在 php 中返回 null

    我在使用curl操作获取数据时遇到问题 在这里我隐藏了令牌 如果我仅在浏览器中使用网址 那么它会返回数据 但这里它为空
  • 根据条件收集变量 (R)

    我正在阅读 R for Data Science 一书 并希望根据条件 类似于选择 从数据集中 收集 多个变量 具体来说 我想只选择连续变量而不是分类变量 如何在不手动指定变量的情况下完成此任务 下面不行 library tidyverse
  • node.js 将 http 响应写入流

    我正在通过 http 获取一些二进制数据 我的代码如下所示 var writeStream fs createWriteStream fileName request url function err res res socket pipe
  • Gecko(或任何其他布局引擎)如何呈现文档/页面?

    浏览 Gecko 的文档来了解它如何呈现网页有点困难 我正在对主要浏览器上的项目进行一些性能分析 以了解如何提高响应时间 我知道那里有优化技术 但我并不真正理解它们的基础 我相信如果我知道浏览器引擎如何做它们的事情 这个问题就会得到解决 我
  • 如何在角度应用程序中对 router.navigate 进行单元测试 [重复]

    这个问题在这里已经有答案了 我正在为角度应用程序运行单元测试 我想对导航在角度应用程序中是否正常工作进行单元测试 if this customer length 0 this router navigate nocustomer 以及这个的
  • Laravel 4.1:如何对雄辩的渴望关系进行分页?

    存在关于旧的 L3 急切加载分页的问题 而不是使用 eloquent 但我想使用雄辩来获得与分页的热切加载关系 主要型号 Topic与有一对多关系Posts 所以那个Topic有很多Posts 我用这个函数获取所有数据 public fun