IT俱乐部 PHP Laravel Eloquent取上一条和下一条数据的id实现讲解

Laravel Eloquent取上一条和下一条数据的id实现讲解

起源

首先文章的起源来于一个问题:

Laravel的Eloquent ORM 怎么获取当前记录的下一条

我想获取下一条把它的active字段更改为yes,但是这样貌似获取不到

$next_active = $ips->where("id", ">", $ips_get->id)->first();
$next_active->update(["active" => "yes"]);

然后,当时在答案里面简单写了一下解决方案。不过由于这个取得下一条和取得上一条的记录其实在日常的开发当中还是会经常遇到,最常见的场景可能就是取得一篇文章的上一篇文章和下一篇文章了。其实这个在LaravelEloquent中实现还是挺容易的,不过由于Laravel并没有直接提供给我们相应的方法,我们得使用一个小小的技巧:

取得上一篇的文章id

protected function getPrevArticleId($id)
    {
        return Article::where('id', 'max('id');
    }

$id就是当前文章的id,我们通过max()来取得比当前id小的最大值,也就是当前id的前一篇文章的id

取得下一篇的文章id

protected function getNextArticleId($id)
    {
        return Article::where('id', '>', $id)->min('id');
    }

基本上可以说是:同理可得。这个取得下一篇文章的id其实就是一个相反的过程,理解万岁。

一旦我们取得上一篇和下一篇的文章id之后,我们就可以随心所欲了,比如:

$next_article = Article::find($this->getNextArticleId($article->id));

多说两句

那如果是对于一个文章的管理来说,我们其实可以这么做:

articles表中增加一个published_at的字段,这里可以将published_at字段设置为一个Carbon对象,然后我们在前端展示的时候就可以根据published_at来判读是否将文章展示出来。

比如说查询语句:

public function scopePublished($query)
    {
        $query->where('published_at','published()...

View展示




处理文章的前一篇和后一篇的解决方案已完成。

以上就是Laravel Eloquent取上一条和下一条数据的id实现讲解的详细内容,更多关于Laravel Eloquent取数据id的资料请关注IT俱乐部其它相关文章!

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/code/php/8597.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部