繁体   English   中英

如何使用Laravel分页和跳过(1)

[英]How to use laravel Paginate and skip(1)

你好。

我目前正在创建一个站点,将论坛帖子吸引到一个单独的页面上,在其中我将它们用作博客条目。 为了使其按我想要的方式工作,我首先-> get()获取有关顶部,主要,博客条目的最新文章,然后我以其以下砌体样式向其下面的其他人进行发布:www.hockeyforat.se/laravel

这意味着我确实有此设置:

$post = Post::whereNewTopic(true)
            ->whereHas('Topic', function($q){$q->whereForumId(13);})
            ->orderBy('pid', 'DESC')
            ->first();
    $vars['p'] = $post;

这显然是要拖出最新的帖子并将其放在顶部,这样效果很好,但是接下来是我不得不跳过第一篇文章的另一部分(因为上面的代码已经在页面上了)。 我用它来做到这一点:

$posts = Post::whereNewTopic(true)
        ->whereHas('Topic', function($q){$q->whereForumId(13);})
        ->orderBy('pid', 'DESC')
        ->skip(1)
        ->take(100000)
        ->get();
    $vars['posts'] = $posts;

这也非常有效。 但是当我想对它进行分页时,我遇到了一些问题。由于某种原因,我的-> paginate(6)忽略了- > skip(1) 有人知道如何解决这个问题吗? 例子再次出现在这里:www.hockeyforat.se/laravel,我还将在下面添加一张图片。 如您所见,由于第一条是通过上面的$ post绘制的,因此我不会连续跳过第一条。

$posts = Post::whereNewTopic(true)
            ->whereHas('Topic', function($q){$q->whereForumId(13);})
            ->orderBy('pid', 'DESC')
            **->skip(1)**
            ->take(100000)
            **->paginate(6);**
    $vars['posts'] = $posts;

http://i.stack.imgur.com/UIfi9.jpg

2种方式:

  • 首先:仅使用->paginate(6)而不跳过,并使用echo $users->render();并渲染分页号echo $users->render();

  • 第二:不要使用->paginate(6) ,使用->take($take)->skip($page * $take)在您的情况下意味着: ->take(6)->skip($page * 6) $page必须是您请求的一部分,并以0(零)开头。

无法像预期的那样使跳转部分与分页一起使用,但是通过说“不要对$ post中的任何分页ID(pid)分页”来解决。

$post = Post::whereNewTopic(true)
        ->whereHas('Topic', function($q){$q->whereForumId(13);})
        ->orderBy('pid', 'DESC')
        ->first();
$vars['p'] = $post;


$posts = Post::whereNewTopic(true)
            ->whereHas('Topic', function($q){$q->whereForumId(13);})
            ->where('pid', '<>', $post->pid)
            ->orderBy('pid', 'DESC')
            ->paginate(6);
$vars['posts'] = $posts;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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