【问题标题】:How to use pagination on an array of arrays in Laravel如何在 Laravel 中的数组数组上使用分页
【发布时间】:2020-02-27 00:28:42
【问题描述】:

我将以下数组添加到all_updates[] 中,如下所示:

$all_updates[] = $all_update_in;
$all_updates[] = $all_update_out;
$all_updates[] = $all_update_oth;

$all_updates 输出:

array(3) { [0]=> array(0) { } [1]=> array(0) { } [2]=> array(3) { [0]=> object(stdClass)# 365 (21) { ["id"]=> int(84) ["created_at"]=> string(19) "2019-10-31 12:24:28" ["updated_at"]=> string(19) "2019-10-31 12:24:28" ["title"]=> string(14) "标签最新" ["body"]=> string(20) "标签最新答案" } } }

我正在尝试按如下方式对最终数组进行分页:

$Final_array= $all_updates->paginate(15);

我收到以下错误:

在非对象上调用成员函数 paginate()

【问题讨论】:

  • paginate() 函数专用于查询构建器对象,不能在数组上调用它
  • 如果您发布完整代码,也许我们可以提供更好的建议。因为,我们需要知道你为什么要在分开$all_update_in$all_update_out$all_update_oth 之后将它们组合起来。

标签: php laravel


【解决方案1】:

您不能对数组进行分页。您对存储在数组中而不是数组本身的查询输出进行分页。

这意味着您的 3 个嵌套数组在插入父数组之前应该已经分页。

然后你循环它们并得到links 字段。这是您的分页信息。

【讨论】:

    【解决方案2】:

    首先您要使用collect($arr) 将数组转换为集合

    然后检查以下线程上的 hakob93 答案以继续前进: https://laracasts.com/discuss/channels/laravel/how-to-paginate-laravel-collection?page=1#reply=363252

    【讨论】:

      【解决方案3】:

      paginate() 函数是查询生成器,所以你不能在这里使用。

      但你可以使用 take() 和 slice()。

      喜欢

      $skipRow=0;
      
      $data=[
        [
          'id'=>1,
          'name'=>'suresh'
        ]
        [
          'id'=>2,
          'name'=>'mahesh'
        ]
      ];
      
      $collectedData=collect($data);
      
      $rowData=$collectedData->slice($skipRow)->take(15);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-01
        • 2014-06-17
        • 1970-01-01
        • 2016-07-02
        相关资源
        最近更新 更多