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

Laravel的Illumize分页器找不到查询字符串

阎宝
2023-03-14

我正在做一个老的PHP项目,它运行在遗留的SQL查询中,这很好,但我喜欢使用像Laravel Illuminate SQL包这样的查询生成器!

所以我添加了所有必需的包依赖项来运行SQL,这个查询生成器似乎可以很好地进行分页!

$users = Capsule::table('users')->paginate(1)->toArray();

但是,分页器似乎不能监听查询字符串!例如,通过运行上面的代码,它会给出一些属性,如next_page、previous_page等...

当我试图在URL中传递查询字符串时,它无法从查询字符串(从GET请求)中获取数据

访问此页面http://app.app/?page=2将得到相同的结果集。

我应该如何配置Illumate sql包,以便它也可以监听查询字符串?

编辑

此外,我尝试使用illuminate/http包,但是请求-

<?php
  require_once './vendor/autoload.php';
  use \Illuminate\Http\Request;

  $req = new Request();

  echo '<pre>';
  print_r($req->all());
  echo '</pre>';

我缺少的是使用http包,任何想法都会有所帮助。

共有3个答案

安承教
2023-03-14

>

您可以使用类来接收和使用Http负载。

您的控制器文件:

<?php

use Illuminate\Http\Request;
class YourControllerClassName{
    public function someFunction(Request $request){
         echo "<pre>";
         print_r($request->all());
         print_r($request->input('page'));
         $users = Capsule::table('users')->paginate($request->input('page'))->toArray();
    }
}
骆利
2023-03-14

需要注意的是,paginator不会对查询字符串使用其他参数-它只使用参数来获得有效的结果页面。但例如,如果您使用:

http://app.app/?page=2&price=2

它不会从价格为2的数据库结果中获取-这是您的工作。

然而,第二件事是分页器生成的网址。

如果你这样做:

$users = Capsule::table('users')->paginate(1);

您也可以在下一行中使用

$users->appends(request()->except('page'));

这会将查询字符串(页面除外)中的所有其他参数添加到url,因此first_page_url将包含请求中的所有其他参数。

您还可以使用如下流畅的语法对其进行包装:

$users = Capsule::table('users')->paginate(1)->appends(request()->except('page'));
越英韶
2023-03-14

您必须设置页面解析器:

\Illuminate\Pagination\Paginator::currentPageResolver(function ($pageName = 'page') {
    return (int) ($_GET[$pageName] ?? 1);
});

Laravel使用这个解析器。

 类似资料:
  • 我有两种型号: 用户 用户有很多帖子。帖子有很多评论,评论属于帖子。这很简单。 现在我想加载所有的帖子的认证用户与它的评论,如果帖子有评论今天创建。如果帖子今天没有评论,它将不会被加载。这些帖子也将被分页。如何建立查询在laravel雄辩? 我试过这样的方法:

  • 我试图使用查询字符串实现Codeigniter分页,但遇到了一些问题。我已经打开了 因此,使用查询字符串进行分页,但就我所知,当您使用查询字符串进行控制器和方法路由时,这确实是为了工作。然而,在我的情况下,我仍然使用URI段进行路由,但只是想使用查询字符串进行分页、过滤结果、搜索等。当我尝试使用http_build_query()重建的url与查询字符串发送通过它导致per_page(我已重命名为

  • 问题内容: 我的表格中有一个字段,其中包含逗号分隔的字符串,例如。每个数字代表可用的颜色。 运行查询以获取所有红色衬衫(颜色= 1)时,我还会获取颜色为灰色(= 12)和橙色(= 15)的衬衫。 我应该如何重写查询,以便仅选择颜色1而不是选择所有包含数字1的颜色? 问题答案: 经典方法是在左右添加逗号: 但是find_in_set也可以:

  • 我有一个问题,使laravel查询: 我想举个例子: 我有这个但不起作用:

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

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