Laravel Paginate意外显示结果

时间:2018-04-11 22:06:24

标签: laravel laravel-pagination laravel-paginate

控制器功能,用于显示主页上的所有帖子(工作正常,我可以点击查看按预期列出的所有帖子):

namespace App\Http\Controllers;

use App\Post;
use Illuminate\Http\Request;

class PostsController extends Controller
{

    public function showPosts()
    {
        $posts = Post::paginate(5);
        return view('index', ['posts' => $posts]);
    }

控制器功能,用于显示其他页面上的所有帖子:

use App\Page;
use App\Post;
use Illuminate\Http\Request;

class PagesController extends Controller
{
    public function show($slug)
    {
        $posts = Post::paginate(16);
        $page = Page::findBySlug($slug);
        return view('page', ['page' => $page, 'posts' => $posts]);
    }

要在index.blade里面的索引上显示:

    @foreach ($posts as $post)
    @include('partials.post', ['post' => $post])
    @endforeach

要显示在pages.blade:

内的其他页面上
    {{ $posts->links() }}

    @foreach ($posts as $post)

    <?php
    {
        if ($post->category_id == $page->id){?>
            @include('partials.post', ['post' => $post])
        <?php  }
    }?>
    @endforeach

主页运行正常。其他页面在一定程度上起作用。他们在正确的页面上显示正确的帖子。问题在于分页。

以第16篇文章为例,如果我说$posts = Post::paginate(16);,则会在页面上显示帖子,并且没有显示分页按钮,因为帖子总数为16.如果我说$posts = Post::paginate(2);然后第16个帖子出现在第8页的分页上,即使它是该页面的唯一帖子。

1 个答案:

答案 0 :(得分:1)

我认为你理解分页器错了。您应该对筛选后的结果进行分页。不过滤分页的。

PagesController:

jkl
lmn