Laravel 框架获得上一条和下一条文章

在做开发时,一个常见任务就是显示上一条文章以及下一条文章的链接。在查看某篇文章或博客时,显示上一条和下一条,方便用户阅读。

在PHP的其它框架中取得上下文章中,使用类似如下代码:    

public function get_previous_article_by_id($post_id)
{
    $result = $this->fetch_row('article', 'id = (SELECT MAX(id) FROM aws_article WHERE id < '.$post_id.')');
    unset($result['message']);
    return $result;
}

public function get_next_article_by_id($post_id)
{
    $result = $this->fetch_row('article', 'id = (SELECT MIN(id) FROM '.'aws_article'.' WHERE id > '.$post_id.')');
    unset($result['message']);
    return $result;
}

本文讨论如何在Laravel框架中编写。

从数据库中获取一条记录:

$post = Post::where('slug', $slug)->firstOrFail();

现在我们获取到了数据库记录。然后获取当前文章的上一条记录,即记录中id小于当前顺序存储id的降序排列,然后使用first()取回单条记录,也可以使用select()限制返回的数据。

$previous = Post::where('id', '<', $post->id)->orderBy('id','desc')->first();

获取完毕后,可以调用其属性显示。如下代码:

//id
$previous->id
//title
$previous->title

获取下一条记录,和获取上一条记录很像。如下代码:

$next = Post::where('id', '>', $post->id)->orderBy('id')->first();

然后将$previous和$next传递给view视图。注意,在视图中显示时,要检查两个对象是否存在。如下代码示例:

从数据库中获取一条记录:

$post = Post::where('slug', $slug)->firstOrFail();

现在我们获取到了数据库记录。然后获取当前文章的上一条记录,即记录中id小于当前顺序存储id的降序排列,然后使用first()取回单条记录,也可以使用select()限制返回的数据。

$previous = Post::where('id', '<', $post->id)->orderBy('id','desc')->first();

获取后,可以调用其属性显示,如:

//id
$previous->id
//title
$previous->title

获取下一条记录,和获取上一条记录很像:

$next = Post::where('id', '>', $post->id)->orderBy('id')->first();

然后将$previous和$next传递给view视图。注意,在视图中显示时,要检查两个对象是否存在。如下代码示例:

@if(isset($next_posts->slug))
    
@else
    
@endif
@if(isset($previous_posts->slug))
    
@else
    
@endif

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/258334.html

(0)
上一篇 2022年5月20日
下一篇 2022年5月20日

相关推荐

发表回复

登录后才能评论