Laravel Eloquent取上一条和下一条数据的id实现讲解
发布:smiling 来源: PHP粉丝网 添加日期:2023-10-16 18:21:08 浏览: 评论:0
首先文章的起源来于一个问题:
Laravel的Eloquent ORM 怎么获取当前记录的下一条
我想获取下一条把它的active字段更改为yes,但是这样貌似获取不到
$next_active = $ips->where("id", ">", $ips_get->id)->first();
$next_active->update(["active" => "yes"]);
然后,当时在答案里面简单写了一下解决方案。不过由于这个取得下一条和取得上一条的记录其实在日常的开发当中还是会经常遇到,最常见的场景可能就是取得一篇文章的上一篇文章和下一篇文章了。其实这个在Laravel的Eloquent中实现还是挺容易的,不过由于Laravel并没有直接提供给我们相应的方法,我们得使用一个小小的技巧:
取得上一篇的文章id
- protected function getPrevArticleId($id)
- {
- return Article::where('id', '<', $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','<=',Carbon::now());
- }
- //以上方法位于Article中,下面的查询我放在了ArticleController中
- $articles = Article::latest('published_at')->published()...
View展示
- <li class="previous">
- @if($prev_article)
- <a href="/post/{{ $prev_article->slug }}" rel="external nofollow" rel="prev"><i class="fa fa-chevron-left"></i><strong>上一篇</strong><span> {{ $prev_article->title }}</span> </a>
- @endif
- </li>
- <li class="next">
- @if($next_article && $next_article->published_at < Carbon\Carbon::now())
- <a href="/post/{{ $next_article->slug }}" rel="external nofollow" rel="next"><i class="fa fa-chevron-right"></i><strong>下一篇</strong> <span> {{ $next_article->title }}</span></a>
- @endif
- </li>
处理文章的前一篇和后一篇的解决方案已完成。
Tags: Laravel上一条 Laravel下一条 Eloquent
- 上一篇:Laravel多条件where查询语句使用详解
- 下一篇:最后一页
相关文章
- ·Laravel 5框架学习之Eloquent 关系(2021-05-22)
- ·laravel 数据迁移与 Eloquent ORM的实现方法(2021-11-16)
- ·Laravel5.7 Eloquent ORM快速入门详解(2021-11-16)
- ·Laravel Eloquent ORM 多条件查询的例子(2021-12-28)
- ·Laravel Eloquent ORM 实现查询表中指定的字段(2022-01-08)
- ·使用laravel的Eloquent模型如何获取数据库的指定列(2022-01-08)
- ·laravel 之 Eloquent 模型修改器和序列化示例(2022-01-08)
- ·laravel5 Eloquent 实现事务方式(2022-01-14)
- ·laravel 解决Eloquent ORM的save方法无法插入数据的问题(2022-01-14)
- ·Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()(2022-01-16)
- ·Laravel Eloquent分表方法并使用模型关联的实现(2022-01-24)
- ·Laravel框架Eloquent ORM删除数据操作示例(2022-01-25)
- ·laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析(2022-02-01)
- ·Laravel 手动开关 Eloquent 修改器的操作方法(2022-02-01)
- ·laravel5.6 框架操作数据 Eloquent ORM用法示例(2022-02-08)
- ·如何使用Laravel Eloquent来开发无限极分类(2022-05-02)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)