[英]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;
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.