LoginSignup
12
11

More than 5 years have passed since last update.

LaravelのPaginatorに入っているアイテムをいじる

Last updated at Posted at 2017-06-30

環境

Larave 5.1

やったこと

LaravelのPaginator(Illuminate\Pagination\LengthAwarePaginator)で、取得した後に中に入っている item をこそっと追加したり、書き換えたいときがある。

例えば、ユーザー一覧を取得した後に、特定のユーザーのみ上に追加したい、など。

下記のように実現できる。

<?php

$user = User::paginate(20);
$user->getCollection()->push(User::find(123));

getCollection() で内部の Collection が取れるので、そこに対してメソッドを実行すれば良い。

補足

shufflefiltermap など、新しいコレクションを返す関数は効果が無い。
splicetransform などであればOK。

また、IN句を使ってDBから取り直したり、コレクションから Illuminate\Pagination\LengthAwarePaginator::make() する方法もありますが、性能が悪かったり面倒なので却下。

Illuminate\Pagination\LengthAwarePaginator::item はプライベート変数なので変更できない。

12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11