Laravel Pagination获取项目页面

时间:2014-11-03 01:57:31

标签: php laravel pagination

我正在实施一个论坛系统。该应用程序将具有以下系统,并且每个用户将能够看到他们的朋友的活动。所以,当我的一个朋友在论坛上发帖时,我应该在我的Feed中看到一条项目“你的朋友回复了论坛......”。

每件事情都很好,直到这里,但我想实现这样的目标:

我的Feed还应该有一个指向该论坛的链接,该链接会将我带到我朋友的回复页面。此页面不会始终是最后一页。

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

1 个答案:

答案 0 :(得分:0)

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

在Feed中,显示回复的页面

$reply->getLink()
<{1>}模型中的

Reply

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

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);
}

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

我能用这种方法看到的一个漏洞是,如果在第二页上发布的帖子数量超过per_page显示的回复数量。