Laravel Paginator获取项目页面

Jav*_*uez 6 php pagination laravel

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

一切都很好'直到这里,但我希望实现这样的事情:

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

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

ral*_*ino 1

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

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

$reply->getLink()
Run Code Online (Sandbox Code Playgroud)

在模型中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);
}
Run Code Online (Sandbox Code Playgroud)

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

    $newer = 30-18 = 12
    $page = ceil(12/10) = 2
Run Code Online (Sandbox Code Playgroud)

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

我用这种方法发现的一个缺陷是,在这一秒发布的帖子数量是否多于每页显示的回复数量。