设计文章页面时,想添加文章上下文的功能,于是就设计如何添加。文章表 article, 主键是 id, 当前文章id为7

最开始的想法是通过本文章的主键id±1来获取的,设计的SQL为:

SELECT * FROM article WHERE id=6;#上一篇,id=7-1
SELECT * FROM article WHERE id=8;#下一篇,id=7+1

后来想了想,文章id不一定是连续的,如何中间删了几章,就会查不到了,于是就想根据id大于/小于本文章id,只获取据id最近的一条就可以了,因为默认排序是id增序的,所以获取上一篇,还要排序为id降序,SQL语句是:

SELECT * FROM article WHERE id<7 ORDER BY id DESC LIMIT 1;#上一篇
SELECT * FROM article WHERE id>7 LIMIT 1;#下一篇

在Laravel框架中,对应的ORM应该为:

Article::where('id', '<', $id)->orderBy('id','desc')->first();#上一篇
Article::where('id', '>', $id)->first();#下一篇