Laravel Eloquent SoftDeletes

更新於 發佈於 閱讀時間約 3 分鐘

Laravel 提供了快速套用軟刪除的方法,直接在Model中加上use SoftDeletes即可:

use Illuminate\Database\Eloquent\SoftDeletes;
use SoftDeletes;
raw-image

接著在程式中,假設要把文章1刪除,可以直接這樣寫:

Article::find(1)->delete();
raw-image

不難發現,軟刪除其實就是壓上一個刪除時間,並不是真的把資料刪掉。
這邊需特別注意,使用軟刪除其實是會認table欄位deleted_at,因此記得table中要有這個欄位,才能正常運作。


還有一點要特別注意的是,使用軟刪除機制,這筆資料會被系統認為已經不存在了,所以在select的時候,預設不會把已經刪除的資料找出來,也就是deleted_at為空的才會被select出來。

另外,如果我再執行一次上述的Article::find(1)->delete(); 會發現有error:

Error: Call to a member function delete() on null

原因就是這筆已經被認為是刪除的資料,所以在find(1)的時候會找不到這筆,回傳null,所以才會有這個錯誤訊息。


那麼要怎麼找出被刪除的資料呢? 只要使用withTrashed()即可:

Article::withTrashed()->get()

這樣就會select出所有資料,包含被刪除的!


如果只想找出被刪除的,可以用onlyTrashed():

Article::onlyTrashed()->get();

所以上述改成這樣:

Article::onlyTrashed()->find(1)->delete();
//or
Article::withTrashed()->find(1)->delete();

就可以找的到第一筆文章了,也就不會再有錯誤,並且會把deleted_at時間再更新一次。


另外,在建migration的時候,若table有軟刪除需求,可以直接用這個方式建立軟刪除欄位:

$table->softDeletes()
raw-image

建出來的table結構如下,其實softDeletes()就是新增一個deleted_at的timestamp欄位。

raw-image



本筆記參考:
1. https://stackoverflow.com/questions/22426165/laravel-soft-delete-posts
2. https://ithelp.ithome.com.tw/articles/10219283
3. https://stackoverflow.com/questions/20474439/how-to-get-all-rows-soft-deleted-too-from-a-table-in-laravel




留言
avatar-img
留言分享你的想法!
avatar-img
Vic Lin的沙龍
20會員
161內容數
Vic Lin的沙龍的其他內容
2023/08/13
父元件 傳遞方法使用@ <template>    ...    <Login @modalClose="modalClose"/> ... </template> <script setup>     const _modal = ref();     function m
2023/08/13
父元件 傳遞方法使用@ <template>    ...    <Login @modalClose="modalClose"/> ... </template> <script setup>     const _modal = ref();     function m
2023/03/25
前情提要 由於我的筆電已經用了10年,無法再戰下去了,且有預算考量,加上使用電腦幾乎都是定點,只有偶爾回家的時候會需要攜帶,因此最終選擇了迷你電腦,體積小不占空間,又方便攜帶,剛好符合我的需求。 菜單 由於這台無法裝獨顯,所以CPU的部分選擇 AMD R5 3400G(含Vega 11內
Thumbnail
2023/03/25
前情提要 由於我的筆電已經用了10年,無法再戰下去了,且有預算考量,加上使用電腦幾乎都是定點,只有偶爾回家的時候會需要攜帶,因此最終選擇了迷你電腦,體積小不占空間,又方便攜帶,剛好符合我的需求。 菜單 由於這台無法裝獨顯,所以CPU的部分選擇 AMD R5 3400G(含Vega 11內
Thumbnail
2023/03/10
Nuxt3中可使用useFetch來獲取數據,不須再引用axios,相當方便: 本筆記參考: https://juejin.cn/post/7104071421160063012 https://juejin.cn/post/7086472647575339045
2023/03/10
Nuxt3中可使用useFetch來獲取數據,不須再引用axios,相當方便: 本筆記參考: https://juejin.cn/post/7104071421160063012 https://juejin.cn/post/7086472647575339045
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
每次丟垃圾時嘗試斷捨離無用也無愛的物品 從2023年1月開始我給自己新的內化計畫,就是要學著斷捨離。 -----要學著斷捨離這件事其實說起來太過籠統,所以我給自己的具體行動就是,每次倒垃圾時都丟掉一個並非新製造的垃圾,但實際上堆在那邊沒有用處也沒有愛的物件。 也就是說,把大方向轉成可以具體執行
Thumbnail
每次丟垃圾時嘗試斷捨離無用也無愛的物品 從2023年1月開始我給自己新的內化計畫,就是要學著斷捨離。 -----要學著斷捨離這件事其實說起來太過籠統,所以我給自己的具體行動就是,每次倒垃圾時都丟掉一個並非新製造的垃圾,但實際上堆在那邊沒有用處也沒有愛的物件。 也就是說,把大方向轉成可以具體執行
Thumbnail
從去年4月開始到現在,準備邁入斷捨離練習第12個月了!回顧幾年前實施過短暫斷捨離的自己,因為重新閱讀這本「一日丟一物的簡單生活提案」進而下定決心開始認真斷捨離。 現在已經養成一個習慣,只要看到要斷捨離的物品,就會拍照下來上傳IG寫紀錄。原先只是單純紀錄幾行文字,到後來使用固定書寫模式紀錄斷捨離的各
Thumbnail
從去年4月開始到現在,準備邁入斷捨離練習第12個月了!回顧幾年前實施過短暫斷捨離的自己,因為重新閱讀這本「一日丟一物的簡單生活提案」進而下定決心開始認真斷捨離。 現在已經養成一個習慣,只要看到要斷捨離的物品,就會拍照下來上傳IG寫紀錄。原先只是單純紀錄幾行文字,到後來使用固定書寫模式紀錄斷捨離的各
Thumbnail
接續著上次介紹過的 removeDuplicates():移除重複資料,這次也想介紹一個在數據清理時,很基本、很簡單的一步,trimWhitespace(),功能相近於「移除多餘空白」功能以及 TRIM 函式(延伸閱讀:裁剪空格與 TRIM)。來看看怎麼操作!
Thumbnail
接續著上次介紹過的 removeDuplicates():移除重複資料,這次也想介紹一個在數據清理時,很基本、很簡單的一步,trimWhitespace(),功能相近於「移除多餘空白」功能以及 TRIM 函式(延伸閱讀:裁剪空格與 TRIM)。來看看怎麼操作!
Thumbnail
不曉得大家有沒有使用篩選工具後,想刪除特定表格,卻把隱藏的表格也給刪除的經驗呢?這篇文章想與你分享如何只刪除可見表格(保留隱藏表格),以及如何在Excel崁入隱藏版按鈕,一秒選取篩選的可見儲存格。
Thumbnail
不曉得大家有沒有使用篩選工具後,想刪除特定表格,卻把隱藏的表格也給刪除的經驗呢?這篇文章想與你分享如何只刪除可見表格(保留隱藏表格),以及如何在Excel崁入隱藏版按鈕,一秒選取篩選的可見儲存格。
Thumbnail
把衣服塞進衣櫥裏、雜物通通放入櫃桶吧!為什麼整理房間後仍然很混亂?因為只是把物件移動,沒有整理收納呢。即使看不見的空間也要好好整理,接下來了解如何判斷物品去留、可以立即丟掉的斷捨離清單,為你的理想生活加油!斷捨離的新手入門,判斷物品去留的正確方法,50 件可以立即丟掉的「斷捨離清單」⋯
Thumbnail
把衣服塞進衣櫥裏、雜物通通放入櫃桶吧!為什麼整理房間後仍然很混亂?因為只是把物件移動,沒有整理收納呢。即使看不見的空間也要好好整理,接下來了解如何判斷物品去留、可以立即丟掉的斷捨離清單,為你的理想生活加油!斷捨離的新手入門,判斷物品去留的正確方法,50 件可以立即丟掉的「斷捨離清單」⋯
Thumbnail
Daily log中有一張從2020年9月加入的卡片, 不知為何, 2021年3月下旬看著卡了很久的卡片, 當時有另一件事遲遲無法推進, 心中一股阿雜感, 3/21禮拜日下午頭就洗下去 事後來看其實是一股衝動和拖延要事的逃避心態XD, 就很像下禮拜要考試了但就是不想念書一直跑去做別的事
Thumbnail
Daily log中有一張從2020年9月加入的卡片, 不知為何, 2021年3月下旬看著卡了很久的卡片, 當時有另一件事遲遲無法推進, 心中一股阿雜感, 3/21禮拜日下午頭就洗下去 事後來看其實是一股衝動和拖延要事的逃避心態XD, 就很像下禮拜要考試了但就是不想念書一直跑去做別的事
Thumbnail
假設有一包資料如下: 想把某個欄位拿掉,可以用forget: $data = $data->map(function($item) {   return collect($item)->forget('show_order'); }); 本筆記參考: 1. https://stackoverf
Thumbnail
假設有一包資料如下: 想把某個欄位拿掉,可以用forget: $data = $data->map(function($item) {   return collect($item)->forget('show_order'); }); 本筆記參考: 1. https://stackoverf
Thumbnail
寶哥上傳的照片有編號步驟: (1)點選網址進入網站(https://www.remove.bg/)   網站中就有上傳照片的按鈕。 (2)這樣就完成囉,點選下載。 (3)下載成功案例。 (4)如果有地方被去背去掉了,就需要按編輯。 (5)按擦除/恢復那邊。 (6)按恢復,就會有一個小
Thumbnail
寶哥上傳的照片有編號步驟: (1)點選網址進入網站(https://www.remove.bg/)   網站中就有上傳照片的按鈕。 (2)這樣就完成囉,點選下載。 (3)下載成功案例。 (4)如果有地方被去背去掉了,就需要按編輯。 (5)按擦除/恢復那邊。 (6)按恢復,就會有一個小
Thumbnail
對於電腦空間不足,你是否也感覺很頭痛呢? 其實電腦用久了就會產生很多無用的垃圾檔案,只要把它刪除就能清理出很多空間 在這個文章中將教你最實用的清理垃圾方法,讓你的電腦再也不被垃圾占滿
Thumbnail
對於電腦空間不足,你是否也感覺很頭痛呢? 其實電腦用久了就會產生很多無用的垃圾檔案,只要把它刪除就能清理出很多空間 在這個文章中將教你最實用的清理垃圾方法,讓你的電腦再也不被垃圾占滿
Thumbnail
資訊的斷捨離 資訊累積起來也是很可觀的 像是我現在發現 一直沒積極刪的mail 竟然多達18000多封的mail 積在我的信箱裡 現在我怎麼刪 都還有多達12000 還有像是 照片 文件 公司累積的
Thumbnail
資訊的斷捨離 資訊累積起來也是很可觀的 像是我現在發現 一直沒積極刪的mail 竟然多達18000多封的mail 積在我的信箱裡 現在我怎麼刪 都還有多達12000 還有像是 照片 文件 公司累積的
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News