2017-11-03 2 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을 걱정하지 한 최신 또한 페이지 매김을 int로 먼저오고 있습니다 최상의 솔루션의

하나는 쿼리를 할 때 단순히 결과를 주문하는 것입니다 버전이 이거 야? '작동하지 않습니다'는 의미, 즉 어떤 오류를 보았습니까? –

+0

이것은 laravel 5.5입니다. 낮은 코드가 작동하지 않습니다. – Santosraj

+0

어떤 오류가 발생 했습니까? –

답변

0

$posts = Post::all(); 이미 쿼리를 실행하기 때문에.

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

은 원하는 것입니다.

주의 사항 : latest 당신은

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

GET 요청이 쿼리를 실행합니다 PAGINATE 등의 불필요한 이동해야

0

created_at 열을 필요로한다.

+0

$ request-> category == null 인 경우 – Santosraj

+0

categoy가 null 일 때 무엇을하고 싶습니까? – pseudoanime

0

가 첫 번째, 즉 매김하여 쿼리가 관찰을 기반으로, 두 번째의 경우 구성 페이지

당 10 개 개의 레코드를 가져올 수 있습니다, 당신은 대부분 2 개 이상의 오류가 발생했습니다 : 라인에, 첫 번째 그 이 메서드는 적어도 하나의 매개 변수를 필요로하기 때문에 get 메서드를 사용했습니다. 자사의 수집, 이후부터

Type error: Too few arguments to function Illuminate\Support\Collection::get() 

다른 그러므로 다른 오류가 발생합니다 컬렉션 paginate 또는 latest 방법처럼 아무것도 없다. 컬렉션의 Available methods에서 컬렉션에 허용 된 메소드를 살펴보아야합니다.

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

이 방법에 대한 paginating a collection