资讯专栏INFORMATION COLUMN

Laravel Eloquent取上一条和下一条数据

shery / 2946人阅读

摘要:不过由于这个取得下一条和取得上一条的记录其实在日常的开发当中还是会经常遇到,最常见的场景可能就是取得一篇文章的上一篇文章和下一篇文章了。取得下一篇的文章基本上可以说是同理可得。

原文来自:https://jellybool.com/post/laravel-get-next-and-prev-posts-with-eloquent

首先文章的起源来与SF上面的一个问题:

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

然后,当时在答案里面简单写了一下解决方案。不过由于这个取得下一条和取得上一条的记录其实在日常的开发当中还是会经常遇到,最常见的场景可能就是取得一篇文章的上一篇文章和下一篇文章了。其实这个在LaravelEloquent中实现还是挺容易的,不过由于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展示:


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

Happy Hacking

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21034.html

相关文章

  • laravel5.5手写教程4Eloquent ORM分页及软删除

    摘要:从而达到了软删除。不过,你可以通过在查询中调用方法来强制查询已被软删除的模型方法也可以被用在关联查询只取出软删除数据会只取出软删除数据恢复被软删除的模型有时候你可能希望取消删除一个已被软删除的模型。 Laravel 有三宝,路由、容器和 Eloquent ORM,Eloquent ORM。我个人一直比较推荐于在实际操作中学习,之前简单了解了路由和Eloquent ORM的基本用法,今天...

    mindwind 评论0 收藏0
  • Laravel 5.4 入门系列 4. 任务列表显示(2)

    摘要:同时,传入参数,即已存在的查询。因此,更为常见的做法是在控制器中处理路由请求。 这一节,我们进一步完善上一节创建的任务列表。主要知识点: Eloquent Model 控制器 路由模型绑定 Eloquent Model 新增迁移 首先,我们为数据库表 tasks 新增一个字段 completed,用来表示任务是否完成: $ php artisan make:migration ad...

    banana_pi 评论0 收藏0
  • Laravel 5系列教程五:MVC的基本流程

    摘要:原文来自免费视频教程地址期间受到很多私事影响,终于还是要好好写写的教程了。我们来实现这个功能显示文章详情通过文章展示来快速体验上面的流程注册路由来到中,我们增加一个路由上面的路由指定我们需要加载中的方法。 原文来自: https://jellybool.com/post/programming-with-laravel-5-model-controller-view-basic-wor...

    mrcode 评论0 收藏0
  • 个人整理, 阅读过的好文章 (每天随时更新)

    摘要:大家有好的文章可以在评论下面分享出来共同进步本文链接数组使用之道程序员进阶学习书籍参考指南教你在不使用框架的情况下也能写出现代化代码巧用数组函数框架中间件实现没错,这就是面向对象编程设计模式需要遵循的个基本原则令人困惑的在中使用协程实现多任 大家有好的文章,可以在评论下面分享出来, 共同进步! 本文github链接 php PHP 数组使用之道 PHP程序员进阶学习书籍参考指南 教你...

    Chiclaim 评论0 收藏0
  • laravel手动创建数组分页

    摘要:目前,无法高效执行使用语句的分页操作。如果你需要在分页结果集中使用,建议你查询数据库并手动创建分页器。手动创建分页如果你想手动创建分页实例并且最终得到一个数组类型的结果,可以根据需求来创建或者实例来实现。 showImg(https://segmentfault.com/img/bVbbGos?w=640&h=400); laravel分页功能: 有几种方法可以对数据进行分页。最简单的...

    acrazing 评论0 收藏0

发表评论

0条评论

shery

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<