在做开发时,一个常见任务就是显示上一条文章以及下一条文章的链接。在查看某篇文章或博客时,显示上一条和下一条,方便用户阅读。
在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))
上一篇 {!! str_limit($next_posts->title,40) !!}
@else
上一篇 没有了
@endif
@if(isset($previous_posts->slug))
下一篇 {!! str_limit($previous_posts->title,40) !!}
@else
上一篇 没有了
@endif
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/258334.html