【问题标题】:How to use laravel Paginate and skip(1)如何使用 laravel 分页和跳过(一)
【发布时间】:2015-05-02 14:23:09
【问题描述】:

你好。

我目前致力于创建一个站点,该站点将论坛帖子绘制到一个单独的页面上,我将它们用作博客条目。为了让它按我的意愿工作,我首先 ->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

【问题讨论】:

    标签: php laravel pagination skip


    【解决方案1】:

    无法让跳过部分按预期使用分页,但通过说“不要对 $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;
    

    【讨论】:

      【解决方案2】:

      2 种方式:

      • 首先:只使用-&gt;paginate(6),不跳过并渲染 带有echo $users-&gt;render();的页码

      • 第二个:不要使用-&gt;paginate(6),使用-&gt;take($take)-&gt;skip($page * $take) 在您的情况下是指:-&gt;take(6)-&gt;skip($page * 6)$page 必须是您请求的一部分,并且 从 0(零)开始。

      【讨论】:

      • 在渲染之前一切正常,所以我们开始探索其他方法,并通过添加到这个问题的解决方案来解决。感谢您的帮助! :)
      猜你喜欢
      • 1970-01-01
      • 2015-03-12
      • 2022-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 2019-03-12
      • 2014-01-30
      相关资源
      最近更新 更多