摘要:不過由于這個(gè)取得下一條和取得上一條的記錄其實(shí)在日常的開發(fā)當(dāng)中還是會(huì)經(jīng)常遇到,最常見的場(chǎng)景可能就是取得一篇文章的上一篇文章和下一篇文章了。取得下一篇的文章基本上可以說是同理可得。
原文來自:https://jellybool.com/post/laravel-get-next-and-prev-posts-with-eloquent
首先文章的起源來與SF上面的一個(gè)問題:
Laravel的Eloquent ORM 怎么獲取當(dāng)前記錄的下一條
然后,當(dāng)時(shí)在答案里面簡(jiǎn)單寫了一下解決方案。不過由于這個(gè)取得下一條和取得上一條的記錄其實(shí)在日常的開發(fā)當(dāng)中還是會(huì)經(jīng)常遇到,最常見的場(chǎng)景可能就是取得一篇文章的上一篇文章和下一篇文章了。其實(shí)這個(gè)在Laravel的Eloquent中實(shí)現(xiàn)還是挺容易的,不過由于Laravel并沒有直接提供給我們相應(yīng)的方法,我們得使用一個(gè)小小的技巧:
取得上一篇的文章idprotected function getPrevArticleId($id) { return Article::where("id", "<", $id)->max("id"); }
$id就是當(dāng)前文章的id,我們通過max()來取得比當(dāng)前id小的最大值,也就是當(dāng)前id的前一篇文章的id。
取得下一篇的文章idprotected function getNextArticleId($id) { return Article::where("id", ">", $id)->min("id"); }
基本上可以說是:同理可得。這個(gè)取得下一篇文章的id其實(shí)就是一個(gè)相反的過程,理解萬歲。
一旦我們?nèi)〉蒙弦黄拖乱黄奈恼耰d之后,我們就可以隨心所欲了,比如:
$next_article = Article::find($this->getNextArticleId($article->id));多說兩句
那如果是對(duì)于一個(gè)文章的管理來說,我們其實(shí)可以這么做:
給articles表中增加一個(gè)published_at的字段,這里可以將published_at字段設(shè)置為一個(gè)Carbon對(duì)象,然后我們?cè)谇岸苏故镜臅r(shí)候就可以根據(jù)published_at來判讀是否將文章展示出來。
比如說查詢語(yǔ)句:
public function scopePublished($query) { $query->where("published_at","<=",Carbon::now()); } //以上方法位于Article中,下面的查詢我放在了ArticleController中 $articles = Article::latest("published_at")->published()...View展示:
處理文章的前一篇和后一篇的解決方案已完成。
Happy Hacking
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/21034.html
摘要:從而達(dá)到了軟刪除。不過,你可以通過在查詢中調(diào)用方法來強(qiáng)制查詢已被軟刪除的模型方法也可以被用在關(guān)聯(lián)查詢只取出軟刪除數(shù)據(jù)會(huì)只取出軟刪除數(shù)據(jù)恢復(fù)被軟刪除的模型有時(shí)候你可能希望取消刪除一個(gè)已被軟刪除的模型。 Laravel 有三寶,路由、容器和 Eloquent ORM,Eloquent ORM。我個(gè)人一直比較推薦于在實(shí)際操作中學(xué)習(xí),之前簡(jiǎn)單了解了路由和Eloquent ORM的基本用法,今天...
摘要:同時(shí),傳入?yún)?shù),即已存在的查詢。因此,更為常見的做法是在控制器中處理路由請(qǐng)求。 這一節(jié),我們進(jìn)一步完善上一節(jié)創(chuàng)建的任務(wù)列表。主要知識(shí)點(diǎn): Eloquent Model 控制器 路由模型綁定 Eloquent Model 新增遷移 首先,我們?yōu)閿?shù)據(jù)庫(kù)表 tasks 新增一個(gè)字段 completed,用來表示任務(wù)是否完成: $ php artisan make:migration ad...
摘要:原文來自免費(fèi)視頻教程地址期間受到很多私事影響,終于還是要好好寫寫的教程了。我們來實(shí)現(xiàn)這個(gè)功能顯示文章詳情通過文章展示來快速體驗(yàn)上面的流程注冊(cè)路由來到中,我們?cè)黾右粋€(gè)路由上面的路由指定我們需要加載中的方法。 原文來自: https://jellybool.com/post/programming-with-laravel-5-model-controller-view-basic-wor...
摘要:大家有好的文章可以在評(píng)論下面分享出來共同進(jìn)步本文鏈接數(shù)組使用之道程序員進(jìn)階學(xué)習(xí)書籍參考指南教你在不使用框架的情況下也能寫出現(xiàn)代化代碼巧用數(shù)組函數(shù)框架中間件實(shí)現(xiàn)沒錯(cuò),這就是面向?qū)ο缶幊淘O(shè)計(jì)模式需要遵循的個(gè)基本原則令人困惑的在中使用協(xié)程實(shí)現(xiàn)多任 大家有好的文章,可以在評(píng)論下面分享出來, 共同進(jìn)步! 本文github鏈接 php PHP 數(shù)組使用之道 PHP程序員進(jìn)階學(xué)習(xí)書籍參考指南 教你...
摘要:目前,無法高效執(zhí)行使用語(yǔ)句的分頁(yè)操作。如果你需要在分頁(yè)結(jié)果集中使用,建議你查詢數(shù)據(jù)庫(kù)并手動(dòng)創(chuàng)建分頁(yè)器。手動(dòng)創(chuàng)建分頁(yè)如果你想手動(dòng)創(chuàng)建分頁(yè)實(shí)例并且最終得到一個(gè)數(shù)組類型的結(jié)果,可以根據(jù)需求來創(chuàng)建或者實(shí)例來實(shí)現(xiàn)。 showImg(https://segmentfault.com/img/bVbbGos?w=640&h=400); laravel分頁(yè)功能: 有幾種方法可以對(duì)數(shù)據(jù)進(jìn)行分頁(yè)。最簡(jiǎn)單的...
閱讀 2675·2023-04-25 18:10
閱讀 1611·2019-08-30 15:53
閱讀 2803·2019-08-30 13:10
閱讀 3224·2019-08-29 18:40
閱讀 1133·2019-08-23 18:31
閱讀 1205·2019-08-23 16:49
閱讀 3407·2019-08-23 16:07
閱讀 881·2019-08-23 15:27