【问题标题】:Laravel - what does the manual paginations 'option' query parameter do?Laravel - 手动分页“选项”查询参数有什么作用?
【发布时间】:2021-08-02 02:48:23
【问题描述】:

我在谷歌搜索时发现的手动分页工作正常,但我只是想知道选项参数中的'query' => $request->query() 有什么作用?

$total = count($form_list);
$per_page = 10;
$current_page = $request->input('page') ?? 1;
$starting_point = ($current_page * $per_page) - $per_page;

$form_list = array_slice($form_list, $starting_point, $per_page, true);

$form_list = new Paginator($form_list, $total, $per_page, $current_page, [
    'path' => $request->url(),
    'query' => $request->query(),
]);

【问题讨论】:

    标签: laravel laravel-7 laravel-pagination


    【解决方案1】:

    不带任何参数调用->query() 会将查询字符串中的所有值作为关联数组返回。

    假设你有一个这样的查询字符串:

    https://example.com/path/to/page?name=ferret&color=purple
    

    您可以通过以下方式检索name 的值:

    $request->query('name')
    

    返回ferret。您还可以传递第二个参数作为默认值,因此如果您调用:

    $request->query('size', 'Medium')
    

    查询字符串中不存在,您将获得“中”而不是 null

    如果省略所有参数,您将收到如下所示的关联数组:

    query = [
      'name' => 'ferret',
      'color' => 'purple',
    ]
    

    分页本身不需要选项参数,但您的数据集查询需要。如果你不传递query参数,当你点击其中一个分页url时,你会得到这样的:

    https://example.com/path/to/page?page=2&per_page=5
    

    有时,这很好用,会给我们想要的东西,但有时,我们需要那些额外的查询字符串来获取正确的数据集。我们传入查询中的所有值以获得如下结果:

    https://example.com/path/to/page?page=2&per_page=5&name=ferret&color=purple
    

    这将过滤所有紫色雪貂的数据集。至于是否需要它的问题,由您决定这对您的代码是否必不可少,或者您是否可以只使用分页。

    祝你好运!我希望这会有所帮助。

    【讨论】:

    • 感谢您的回复。但我认为你误解了我的问题(或者我的问题不清楚),我想知道的是在 LenghtAwarePaginator 类的构造函数中,有一个“选项”参数在数组中有“查询”,并且想了解这是在做什么,我是否需要这条线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多