2017-11-03 4 views
1

laravelでフィルタを作成しようとしています。この次のフィルタはlaravelコレクションをフィルタリングする方法

$posts= Post::where('category',$request->category)->orderBy('id','desc')->paginate(10); 

に動作します。しかし、私はこの

public function index(Request $request) 
{ 
    $posts= Post::where('category',$request->category)->get(); 
    $posts->latest()->paginate(10); 
    dd($posts); 

ような何かをしようとすると、それは動作しません。なぜ誰かがこれを説明して、動作するコードを私に提供できますか?私のプロジェクトには複数のフィルタがあります。

エラー enter image description here

+0

何laravelを気にしませ持つ必要があり

Blog::where('category',$request->category) ->orderBy('created_at', 'desc') //you may use also 'updated_at' also depends on your need ->paginate(10); 

この方法バージョンはこれですか? 「うまくいかない」とは何ですか?つまり、どのようなエラーが見られましたか? –

+0

これはlaravel 5.5です。下位のコードが動作しないことを意味します。 – Santosraj

+0

どのようなエラーが発生しましたか? –

答えて

0

$posts = Post::all();はすでにクエリを実行しているため。

Post::where('category',$request->category)->latest()->paginate(10)->get(); 

となります。

注:latestはあなたがget要求がのpaginateがクエリを実行しますと、不要である

$posts = Post::where('category',$request->category)->latest()->paginate(10); 

を行くべきcreated_at

0

が必要です。

+0

$ request-> category == nullの場合 – Santosraj

+0

categoyがnullのときに何が起こりますか? – pseudoanime

0

は最初の1、すなわちページネーションによってクエリが観察に基づいて、1秒間に構築ページ

あたり10件のレコードをフェッチになり、あなたが最も可能性が高い、少なくとも2つのエラーが発生しています ライン上で、最初にそのそのメソッドは少なくとも1つのパラメータを必要とするため、getメソッドを使用しました。

そのコレクション以来
Type error: Too few arguments to function Illuminate\Support\Collection::get() 

他、およびコレクションのpaginateまたはlatest方法のようなものは何もありませんので、したがって、他のエラーがスローされます。 CollectionのAvailable methodsをチェックして、コレクションで許可されているメソッドを垣間見る必要があります。

最良の解決策の一つは、クエリを作成する際に、単純に結果を注文することです:あなたは、最新のページネーションをint最初に来て、また、約paginating a collection

関連する問題