如何在 Laravel 中将集合或自定义查询分页到 API json 中?

2024-02-05

我有一个复杂的查询,该查询不基于我想要对其输出进行分页的任何特定模型表。然而 Laravel 的内置分页依赖于模型和表格。如何对集合进行分页并使输出与 laravel 内置的分页输出格式匹配?


我将其保存在 app\Core\Helpers 类中,以便我可以从任何地方调用它们作为 \App\Core\Helpers::makePaginatorForCollection($query_results)。最有可能使用它的地方是处理复杂查询的控制器的最后一行。

在应用程序/Http/Controllers/simpleExampleController.php

/**
 * simpleExampleController
 **/
public function myWeirdData(Request $request){
    $my_unsafe_sql = '...';//never do this!!
    $result = DB::statement(DB::raw($my_unsafe_sql));
    return \App\Core\Helpers::makePaginatorForCollection($result);
}

在 app\Core\Helpers.php 或您喜欢的任何地方自动加载。

/**
 * This will match laravel's built in Model::paginate()
 * because it uses the same underlying code.
 *
 * @param \Illuminate\Support\Collection $collection
 *
 * @return \Illuminate\Pagination\LengthAwarePaginator
 */
public static function makePaginatorForCollection(\Illuminate\Support\Collection $collection){
    $current_page = (request()->has('page')? request()->page : 1) -1;//off by 1 (make zero start)
    $per_page = (request()->has('per_page')? request()->per_page : config('api.pagination.per_page')) *1;//make numeric
    $page_data = $collection->slice($current_page * $per_page, $per_page)->all();

    return new \Illuminate\Pagination\LengthAwarePaginator(array_values($page_data), count($collection), $per_page);
}

/**
 * Copy and refactor makePaginatorForCollection()
 * if collection building is too slow.
 *
 * @param $array
 *
 * @return \Illuminate\Pagination\LengthAwarePaginator
 */
public static function makePaginatorForArray($array){
    $collection = collect($array);

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

如何在 Laravel 中将集合或自定义查询分页到 API json 中? 的相关文章

  • 通过API更新Twitter背景

    我在通过 Twitter 的 API 更新背景时遇到了一些问题 target url http www google com logos 11th birthday gif ch curl init curl setopt ch CURLO
  • 如何循环遍历颜色数组以更改按键背景(按下/向下)

    互联网 如果这与其他人没有什么关系 请原谅我 但我会将其留在这里 以防这是一个有效的问题 我正在尝试创建一个文本区域字段 其中用户每次按下键 a z 都会触发背景颜色更改 在数组中列出 我一直在用 JQuery 做这件事 我想我已经很接近了
  • 如何在 Java 中创建要打印到 JFrame 的 JLabels 数组

    我正在尝试制作一系列标签 每个标签都有一个来自函数的不同值 我不知道要使用的标签的确切数量 我的意思是可以打印任意数量的值 请帮我做这件事 很简单 只需一个方法返回一个数组或一些 JLabels 集合 并将它们全部添加到您的 JCompon
  • 将数组传递给函数名称冲突

    Specs GNU bash 版本 3 1 17 无法升级 Premise 我一直在摆弄数组 我想知道是否有任何方法可以让函数的本地变量与所述函数外部的数组同名 Example 在下面的示例中 我将尝试显示该问题 Working bin b
  • 尝试在 JavaScript 中循环前 50 个偶数斐波那契数时出现错误输出 [重复]

    这个问题在这里已经有答案了 我是 JavaScript 新手 无法让我的代码正常工作 非常感谢任何帮助 指导 当尝试 显示前 50 个偶数斐波那契数的总和 时 我得到错误的输出 当前为 9 715575428267785e 30 我需要 1
  • 将二维数组拆分为每行数组的最Pythonic方法是什么?

    我有一个函数 foo 返回形状为 1000 2 的数组 如何将其拆分为两个数组 a 1000 和 b 1000 我正在寻找这样的东西 a b foo 我正在寻找一个可以轻松推广到形状为 1000 5 左右的情况的答案 The zip idi
  • 一起使用“过滤”和“排序”的 Google 表格

    这是我的第一个问题 我希望一切都好 我是使用谷歌表格的新手 但我正在慢慢进步 我正在尝试构建一个工作表 其中包含工作表 1 中的所有数据 在工作表 2 上 我想过滤工作表 2 中 D 列中标有数字 1 的所有数据 为此 我正在使用 FILT
  • Java 数组操作

    我有一个名为 resize 的函数 它接受源数组 并将大小调整为新的宽度和高度 我认为我正在使用的方法效率低下 我听说有更好的方法可以做到这一点 无论如何 当scale是一个int时 下面的代码有效 然而 还有第二个函数称为 half 它使
  • Laravel 资源策略始终为 false

    我试图允许用户在 Laravel 5 4 中查看自己的个人资料 用户策略 php public function view User authUser user return true 在 AuthServiceProvider php 中
  • 获取 LLVM getelementptr 中的操作数名称

    我正在尝试获取 getelementptr 指令引用的数组的名称 当在实际的 C 代码中使用中间变量对数组进行索引时 这似乎起作用 如下所示 int a 0 i a 3 在这种情况下 我得到以下位码 arrayidx getelementp
  • PHP:将数组添加在一起

    有人可以帮我解释一下吗 我有两段代码 其中一个按我的预期工作 但另一个则不然 这有效 a array a gt 1 b gt 2 b array c gt 3 c a b print r c Output Array a gt 1 b gt
  • Array.indexOf 如何比 Array.some 更高效

    这个问题的灵感来自于这个问题的竞争答案 具有多个参数的indexOf https stackoverflow com questions 39000151 indexof with multiple arguments 用户想知道一种有效的
  • NHibernate 中具有不同类型答案的问题

    我正在尝试找到一个问卷问题的简洁解决方案 假设我有一个Questionnaire类有一个集合Answers e g public class Questionnaire public virtual ISet
  • 如何将从 date_parse 返回的日期数组转换回日期字符串

    我有一个由 php 例程 date parse 返回的格式的日期数组 我需要将此日期数组转换回日期字符串 我正在寻找一个与 date parse 例程相反的函数 这是一个接受日期数组作为参数并返回日期字符串的函数 http php net
  • 如何在 Laravel 5 中通过键获取所有缓存项的列表?

    Laravel 中的 Cache 类具有 get itemKey 等方法来从缓存中检索项目 以及 Remember itemKey myData1 myData2 来将项目保存在缓存中 还有一个方法可以检查缓存中是否存在某个项目 Cache
  • 以相反的顺序打印任何集合中的项目?

    我在 使用 Java 进行数据结构和问题解决 一书中遇到以下问题 编写一个例程 使用 Collections API 以相反的顺序打印任何 Collection 中的项目 不要使用 ListIterator 我不会把它放在这里 因为我想让有
  • 计算字符串中的唯一单词

    下面我尝试将字符串数组提供给一个函数 该函数将唯一单词添加到单词数组中 并且如果该单词已经在数组中 则增加计数数组中相应元素的计数 var words var counts calculate a b calculate a c funct
  • foreach 循环中 current() 的意外行为[重复]

    这个问题在这里已经有答案了 这是一个简单的循环 list array A B C D foreach list as var print current list Output demo http 3v4l org sBDjl BBBB O
  • 返回年份数组作为年份范围

    我正在尝试查询一个包含以下内容的表character varying 年份列 并将这些年份作为逗号分隔的年份范围字符串返回 年份范围将由数组中存在的连续年份确定 不连续的年份 年份范围应以逗号分隔 数据类型的原因是character var
  • C语言声明数组没有初始大小

    编写一个程序来操纵温度详细信息 如下所示 输入要计算的天数 主功能 输入摄氏度温度 输入功能 将温度从摄氏度转换为华氏度 独立功能 查找华氏度的平均温度 我怎样才能在没有数组初始大小的情况下制作这个程序 include

随机推荐

  • Centos+Apache+passenger+rails:从 www 文件夹运行 Rails 应用程序

    我正在尝试学习 Rails 所以我是新手 希望得到一些帮助 我试图同时运行多个应用程序 但遇到了一个奇怪的问题 当我尝试用 Rails 生成东西时 它给了我一个权限错误 我浏览了 stackoverflow 和其他几个网站 但没有找到任何好
  • 适用于 Foundry 中的业务/最终用户的电子表格上传

    Foundry 是否具有对将电子表格 相同架构 上传和附加到一个数据集的本机支持 并具有适合业务 最终用户的界面 我正在评估一个用户工作流程 其中涉及临时接收表格电子表格并使用常规编程方法附加它们 我正在尝试在 Foundry 中启用此工作
  • 从 XPages 全局删除 Dojo

    At http www dominoguru com pages 11182010085538 html http www dominoguru com pages 11182010085538 html and http dpastov
  • 限制 python 脚本位置

    我想知道是否有一种方法可以控制 python 脚本的运行位置 这样Python就只允许运行某些位置的脚本 我们正在运行带有 Windows 域控制器的 Windows 环境 原因是作为在具有严格安全要求的环境中锁定 python 的一步 给
  • Python 中 dict 类的动态运算符重载

    我有一个类可以动态重载基本算术运算符 如下所示 import operator class IshyNum def init self n self num n self buildArith def arithmetic self oth
  • 错误:ADB 退出,退出代码为 1 执行流式安装

    我在运行时收到以下错误flutter run然而 在某些项目上 在其他项目上它工作得很好 base Nusraths MacBook Pro flutter uber clone rahama flutter emulators launc
  • android webview 的自定义字体

    我在我的应用程序中使用 webview 我想使用自定义字体以波斯语显示文本 我将字体放在 asset 文件夹中 并编写了一种在 webview 中放置文本的方法 但在不支持波斯语的 api8 中 它显示未知字符而不是我的文本和支持波斯语的
  • 对不是 的直接子级的输入显示选项卡表单验证

    当未聚焦的选项卡出现验证错误时 选项卡标题应显示为红色 相反 当未聚焦的选项卡出现验证错误时 选项卡标题不会给出任何错误指示 当我使用子组件时会发生此问题 如果所有组件都是在创建 编辑级别定义的 则该选项卡将按预期变为红色 但如果存在嵌套组
  • dcast 重命名所有变量以数字开头

    所以我得到的数据如下所示 id year principal interest 1 011000600 2013 0 00 0 00 2 011000600 2014 544 03 0 00 3 011000700 2013 0 00 0
  • Java - 如果随后定义了 actionPerformed,JButton 文本就会消失

    这已经困扰我一段时间了 如果我定义setText在 JButton 上before定义setAction 文本消失 JButton test new JButton test setText test Before disappears t
  • 如何使用 Jasmine 监视匿名函数

    我正在使用 Jasmine 来测试我的角度应用程序 并希望监视匿名函数 使用角度通知服务https github com cgross angular notify https github com cgross angular notif
  • 将 SAS 数据集中的观测值读入数组

    这个问题与大型机上的 SAS 相关 尽管我相信在这种情况下没有什么区别 我有以下 SAS 数据集 Obs DATO T ALLOC T FRESP 1 19328 647 1804 2 19359 654 1797 3 19390 662
  • 如何自定义 Mini-Profiler UI

    我已经在我的 MVC 4 应用程序上安装了 Mini Profiler 它运行得非常顺利 我遇到的唯一问题是用户界面掩盖了用户界面的关键部分 我可以使用 css 在页面上移动它 但理想情况下我想让它默认为隐藏状态 并带有抽屉按钮以使其弹出
  • 自动生成我的 C++ 代码的 uml 图

    不久前 我担任 Java 编程入门课程的助教 我们使用了一个名为BlueJ http www bluej org 它有一个很好的功能 即开发文件的概述是一个轻量级的 UML 图 其中绘制了 使用 指针和继承指针 这使得可以轻松查看程序的结构
  • 查找包含任意数量的嵌套哈希和数组的哈希深处的键/值对

    Web 服务返回的哈希值包含未知数量的嵌套哈希值 其中一些包含数组 而数组又包含未知数量的嵌套哈希值 有些键不是唯一的 即存在于多个嵌套哈希中 然而 我真正关心的所有键都是唯一的 有什么办法可以给顶级哈希提供一个键 并取回它的值 即使键值对
  • 如何在 Web 应用程序中控制 iPhone 的屏幕方向

    我有一个非常基本的网页 它使用 flot 来创建canvas基于图 类似于 SO 用于声誉图的图 对于 PC 显示器 它应该正常输出 宽度 x 轴 为高度的 1 6 倍 但对于 iPhone 我希望页面默认为横向 而不是让它以 纵向 方向溢
  • 从 Snowflake 中的字符串中删除非 ASCII 字符

    如何从 Snowflake SQL 中的字符串中删除所有非 ASCII 字符 我遇到过使用 T SQL 等的解决方案 但没有关于如何在雪花中执行此操作的文章 正则表达式应该足够了 除非您考虑其他情况 select regexp replac
  • 存储凭据以供自动使用

    我已经环顾四周 由于我不是安全或加密专家 所以我仍然对如何在程序中实现加密感到困惑 我需要一台服务器来登录其 gitHub 帐户 以更新具有特殊标头的代码文件 我现在遇到的唯一难题是如何存储 检索服务器的凭据 PushOptions pus
  • 使用 Jackson 将消息从 JSON 反序列化为 POJO

    如果您在不检查消息的情况下不知道要使用什么类型的 POJO 那么如何使用 Jackson 将 JSON 文档反序列化为 POJO 有没有办法向 Jackson 注册一组 POJO 以便它可以根据消息选择一个 我试图解决的场景是通过线路接收
  • 如何在 Laravel 中将集合或自定义查询分页到 API json 中?

    我有一个复杂的查询 该查询不基于我想要对其输出进行分页的任何特定模型表 然而 Laravel 的内置分页依赖于模型和表格 如何对集合进行分页并使输出与 laravel 内置的分页输出格式匹配 我将其保存在 app Core Helpers