Laravel 获取『上一条』/『下一条』记录 ID

58

我们经常会有比如在当前页显示下一篇,或者上一篇文章这样的这样的需求,你可以像下面这样:

...

public function show($id)
{
    // 获取当前文章
    $current = Post::find($id);

    // 获取 “上一篇” 的 ID
    $previousPostID = Post::where('id', '<', $id)->max('id');

    // 同理,获取 “下一篇” 的 ID
    $nextPostId = Post::where('id', '>', $id)->min('id');

    return view('post.show', compact('current', 'previousPostID', 'nextPostId'));
}
...

然后就可以在模板里放好相应的链接了:

<a href="/post/{$previousPostID}">上一篇</a> | <a href="/post/{$nextPostId}">下一篇</a>
讨论数量: 15
public function show(Post $db,$id)
{
    // 获取当前文章
    $current = $db->find($id);

    // 获取 “上一篇” 的 ID
    $previousPostID = $db->where('id', '<', $id)->max('id');

    // 同理,获取 “下一篇” 的 ID
    $nextPostId = $db->where('id', '>', $id)->min('id');

    return view('post.show', compact('current', 'previousPostID', 'nextPostId'));
}

应该这样写才对,你这种写法会new3个对象

2个月前

@xingchen 用的静态方法,不会new3个对象吧,恳请指教

2个月前
Handle

@xingchen 代码格式调整一下吧兄弟

2个月前

这个操作666

2个月前
$item['prev'] = self::query()
    ->where('id', '<', $item['id'])
    ->orderBy('id','desc')
    ->first(['id', 'title','model_id']);
$item['next'] = self::query()
    ->where('id', '>', $item['id'])
    ->orderBy('id','asc')
    ->first(['id', 'title','model_id']);

有时候我们并不需要单纯的ID,可能还会展示其他字段

2个月前

@Caral 不会

2个月前

只是拿ID为啥不用参数直接运算得到还要去查库??

2个月前

谢谢,狠有拥。

2个月前
panda-sir

@Sky-Eye 1. id可能不连续 2. 可能不只是需要id :simple_smile:

1个月前

感谢分享啊啊啊啊啊。。。。正好需要这个功能,自己的写的比较 low,还是你这个简单 :laughing:
我要去改进成为你的写法了。。。

 $priorGoods = Goods::where([
                ['goods_id', '>', $request->goods_id]
            ]) - orderBy('id', 'desc')->limit(1)->value('id');
1个月前
Bowens

6翻了

1个月前

@panda-sir 好像是这么回事。

1个月前
newbing

max 是聚集函数吧,不知道 orderby + limit(1) 会更快、更稳定一些呢。

1个月前
di-gua

@Caral 那个不是静态方法。 调用了__callStatistic 方法,new 了对象

1个月前

@di-gua 是了,刚刚看了一下,确实是调用了Model的__callStatic

1个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!