【问题标题】:How to display pagination links in a blade on Laravel 8?如何在 Laravel 8 的刀片中显示分页链接?
【发布时间】:2021-12-16 16:51:13
【问题描述】:

我需要添加分页,但在我的情况下似乎很复杂,因为我使用分页从数据库中获取数据,但随后我修改了这些数据,当我在刀片上调用 links() 方法时,我得到以下异常方法 Illuminate\Support\Collection::links 不存在。
我在 Controller 方法中的代码:

$transactionsByLastMonth = Transaction::where('created_at', '>=', Carbon::now()->subDays(30)->toDateTimeString())
    ->where('user_id', Auth::user()->id)
    ->with(['user', 'propertyFrom', 'propertyTo', 'paddockFrom', 'paddockTo', 'cattleTypeFrom', 'cattleTypeTo'])
    ->paginate(10);
        
$transactionsByDays = collect(TransactionResource::collection($transactionsByLastMonth))
    ->sortByDesc('created_at')
    ->groupBy(function($date) {
        return Carbon::parse($date['created_at'])->format('d');
    });

return view('user.reports.index', compact('transactionsByDays'));

是的,分页将我的数据限制为 10 行,但由于我按天对数据进行分组,我的集合会自行修改,我无法使用 $transactionsByDays->links() 方法来显示分页。
如果看到 dd($transactionsByDays) ,它看起来像:

Illuminate\Support\Collection {#1381 ▼
  #items: array:3 [▼
    "01" => Illuminate\Support\Collection {#1019 ▼
      #items: array:7 [▼
        0 => array:16 [▶]
        1 => array:16 [▶]
        2 => array:16 [▶]
        3 => array:16 [▶]
        4 => array:16 [▶]
        5 => array:16 [▶]
        6 => array:16 [▶]
      ]
    }
    31 => Illuminate\Support\Collection {#1386 ▼
      #items: array:2 [▼
        0 => array:16 [▶]
        1 => array:16 [▶]
      ]
    }
    30 => Illuminate\Support\Collection {#1384 ▼
      #items: array:1 [▼
        0 => array:16 [▶]
      ]
    }
  ]
}

因此,我需要将“01”、31、30 内的所有数组分页... 我该怎么做?
也许以某种方式在控制器中重写上面的代码?
主要目的是我需要根据我的 json-resource 类将数据分组到每一天。
有什么想法吗?

【问题讨论】:

  • @ManojKiranAppathurai ,如果是真的,那就太容易了。其实我已经找到了解决办法。简而言之,我必须使用paginate() 方法传递一个变量,并将一个分组变量传递给我的视图。然后在第一个变量上使用links() 方法,但在第二个变量(分组)上通过 foreach 迭代数据。我最初尝试在第二个(分组)变量上使用links(),但它不起作用,这就是问题所在。

标签: php laravel collections pagination


【解决方案1】:

我找到了解决方案 gyus。我还必须传递一个变量 transactionsByLastMonth 并在此之上使用 links() 方法。
与此同时,我在我的刀片文件上使用 foreach 超过 transactionsByDays 变量。它可以正确地协同工作,因为它使用数据库中的相同数据,只是在第一种情况下它没有被过滤和分组,而在第二种情况下它是。

return view('user.reports.index', compact('transactionsByLastMonth', 'transactionsByDays'));

【讨论】:

    猜你喜欢
    • 2020-06-20
    • 2016-04-06
    • 1970-01-01
    • 2020-06-18
    • 2021-12-08
    • 1970-01-01
    • 2017-03-01
    • 2023-01-08
    • 1970-01-01
    相关资源
    最近更新 更多