Laravel: forPage() で page によって返値が配列になったりオブジェクトになったり

環境:

Laravel@9.52.4

 

事象:

Laravel でforPage() を使ってPagination を実装したがページによってオブジェクトが返ってくる。

 

↓↓正常な挙動(配列が返る)

↓↓異常な挙動(オブジェクトが返る)

↑↑(indexがfilter()により抜けがある)

solution)

同じロジックでpaginate していたがfilter処理をかましていたので異常な挙動な時はfilter が効いていた。collection->filter() で返る値も配列だが index が抜けているとオブジェクトとしてレスポンスを返してしまう。

したがってindex をつめる必要がある。

pagenate処理中にfilter()関数を使うなら常に結果の$filteredに

$filtered->values() でindexを詰める必要がある。