【问题标题】:Laravel Paginator get item pageLaravel 分页获取项目页面
【发布时间】:2014-12-29 15:58:56
【问题描述】:

我正在实施一个论坛系统。该应用程序将有一个跟随系统,每个用户都可以看到他们朋友的活动。因此,当我的朋友在论坛中发布内容时,我应该会在我的提要中看到一条内容为“您的朋友回复了论坛...”。

到这里为止,一切都很好,但我想实现这样的目标:

我的提要还应该有一个指向该论坛的链接,该链接会将我带到我朋友回复所在的页面。此页面不会总是最后一页。

所以,我的问题是,如果我知道我朋友回复的$reply->id,并且我正在对论坛的所有回复进行分页,我怎么知道我朋友的回复在哪个页面?这很容易还是我要求太多了?

【问题讨论】:

  • 您找到解决方案了吗?我现在与 L5 处于同样的困境中。
  • 我刚刚问了同样的问题——我一开始并没有注意到已经有几个人问过这个问题。 Laracasts.com/discuss 上的论坛有这种能力,但它的创建者没有回复我关于他如何实现它的详细信息的任何请求(可能只是忙)。这是我的问题和一些解决方案 - stackoverflow.com/questions/29155512/…
  • 也许你会比我有更好的运气,Twitter 上的@jeffrey_way 自定义构建了具有此功能的 laracasts.com 论坛。我真的希望在 Laravel 中有一个明显的方法来实现这一点,这非常重要
  • 谢谢!!!我没有意识到关于这个话题还有另一个问题。我读了答案,我想我现在会这样做。

标签: php laravel pagination


【解决方案1】:

这取决于您使用什么来对回复进行排序。此示例假设用户选择了newest,并且我们使用 created_at 来确定发布时间。

在提要中,显示回复所在的页面

$reply->getLink()

Reply模特:

public function getLink($per_page = 10)
{
    //assumes ordered by newest
    $newer = $this->forum()->replies()->orderBy('created_at','desc')->where('created_at','>',$this->created_at)->count();
    $page = ceil($newer/$per_page);
   return url(sprintf('forums/%s/replies/%s?per_page=%s&page=%s',$this->forum_id,$this->id, $per_page,$page);
}

如果帖子总数是 30,而您想要的帖子是第 18 个,那么链接将是

    $newer = 30-18 = 12
    $page = ceil(12/10) = 2

/forums/{id}/replies/{id}?per_page=10&page=2

我可以看到这种方法的一个缺陷是,如果在确切的一秒发布的帖子数量超过了每页显示的回复数量。

【讨论】:

    猜你喜欢
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2021-09-02
    相关资源
    最近更新 更多