やりたかったこと
newsというテーブルからpaginateを使って10個ずつデータを表示したかった
やったこと
$posts = News::all()->sortBy('updated_at')->paginate(10);
newsを更新順に並べ替え手からpaginateしようとした。
結果
Method Illuminate\Database\Eloquent\Collection::paginate does not exist.
、、怒られた。
原因
こちらの記事:Laravel Paginatorについて
に近いことが書いてあった。
ざっくり言うと、all()はcollectionを返し、collectionにpaginateなんてメソッドはない、ということだと思う。
解決方法
$posts = News::orderBy('updated_at', 'desc')->paginate(10);
にしたらうまくいった。
ここでも、sortByがcollectionメソッドだから使えなかったのでorderByを使った。
名前似てるのにややこしい。