web-dev-qa-db-ja.com

Laravelメソッドpaginateは存在しません

モデルの結果をページ分割しようとしていますが、「メソッドページ分割は存在しません。」と表示されます。ここに私のコードがあります:

$user_dispatches = Dispatch::all()->where('user_id', Auth::id())->paginate(10);

ユーザーIDが現在の認証済みユーザーIDと等しいすべてのレコードを取得する必要があります。 paginate()メソッドがなくてもうまく機能します。

10
Andrii H.

all()を削除する必要があります:

_Dispatch::where('user_id', Auth::id())->paginate(10);
_

all()を使用している場合、テーブルからすべての行を取得し、コレクションを取得します。次に、コレクションメソッドwhere()(クエリビルダメソッドwhere()ではなく)を使用していて、コレクションでpaginate()メソッドを使用しようとしていますが、存在しない。

18
Alexey Mezenin

Alexeyの完璧な答えを少し拡張します。

Dispatch::all() => Collectionを返します

Dispatch::all()->where() => Collectionを返します

Dispatch::where() => Queryを返します

Dispatch::where()->get() => Collectionを返します

Dispatch::where()->get()->where() => Collectionを返します

paginateではなく、Queryでのみ「Collection」を呼び出すことができます。

そして、はい、whereQueriesの両方に対してCollections関数を使用することは完全に混乱します。

21
Amarnasan

すべてのレコードとページネーションを使用するには、以下のコードを使用する必要があります:

$user_dispatches = Disspath::paginate(8);
5
Mostafa Norzade
Dispatch::where('user_id', auth()->user()->id)->paginate(10);
2
parastoo amini

メソッドall()を削除する必要があります:

_$user_dispatches = Dispatch::where('user_id', Auth::id())->paginate(10);
_

all()Collectionを返し、paginate()Builderを使用したため

1
Joan Nguyen