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