简体   繁体   中英

having laravel category (slug based) posts with pagination

I have this function, where i get my categories base on their slug

public function postcategoryposts($slug){
  $category = PostCategory::where('slug','=',$slug)->firstOrFail();
  return view('front.postcategory-posts', compact('category'));
}

Currently i'm getting my each category posts in blade like:

@foreach($category->posts as $post)
  {{$post->title}}
@endforeach

until here everything is normal, the problem is how to divide my posts into pages? I am not able to use:

$category = PostCategory::where('slug','=',$slug)->paginate(10);

because I'm using

firstOrFail();

any idea?

You need to add a function to your model to get posts and then paginate.

In your controller

public function postcategoryposts($slug)
{
  $category = PostCategory::where('slug','=',$slug)->firstOrFail();
  $posts = $category->getPaginatedPosts(10);
  return view('front.postcategory-posts', compact('posts'));
}

In your model

// PostCategory model
public function getPaginatedPosts($limit = 10)
{
  // Get category posts using laravel pagination method
  return Post::where('category_id', '=', $this->id)->paginate($limit);
}

In your blade view

<div class="container">
    @foreach ($posts as $post)
        {{ $post->title }}
    @endforeach
</div>

{{ $posts->render() }}

More informations about Laravel pagination here

Hope it's helps you :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM