摘要:從而達到了軟刪除。不過,你可以通過在查詢中調用方法來強制查詢已被軟刪除的模型方法也可以被用在關聯查詢只取出軟刪除數據會只取出軟刪除數據恢復被軟刪除的模型有時候你可能希望取消刪除一個已被軟刪除的模型。
Laravel 有三寶,路由、容器和 Eloquent ORM,Eloquent ORM。
我個人一直比較推薦于在實際操作中學習,之前簡單了解了路由和Eloquent ORM的基本用法,今天我們繼續來學習它的其他用途,在深入了解Laravel 的 Eloquent ORM之前,我們先用他做一個簡單的分頁功能,完成上一章CURD中少了的分頁。
一、基于Eloquent ORM的分頁操作:
后臺分頁常見基本分兩種,一種是跳轉分頁,一種是ajax分頁。
我們上一章學習了,增刪改查,已經有現成的數據表和控制器等,為了測試方便,我們再往數據表里面添加幾條數據。
添加后,我們只要修改NewsController控制器里的index方法即可來練習分頁操作。
此時我們先注釋掉第19行的代碼,打印18行,打開瀏覽器 127.0.0.1/comment 查看:
此時我們打印出來的數據除了表中的前五條數據以外,我們還傳遞過來了當前頁碼current_page,最后頁碼last_page,以及下一條頁碼url next_page_url,可以看出我們可以通過這種方式傳遞參數給API,進行跳轉分頁。
頁鏈接為http://127.0.0.1:9999/comment/?page=頁碼數;即可實現分頁。
下面我們來看ajax分頁,Eqoluent ORM是一個很完美地數據庫應用層組件,依然提供了分頁所需要的各種參數,以滿足參數傳值的分頁。
打開19行注釋,注釋掉18行,重新打印,可以發現打印出來的數據不變,此時我們改變控制器中
var_dump(News::paginate(5,["*"],"page",1)->toArray()); 改為
var_dump(News::paginate(5,["*"],"page",2)->toArray());
此時我們會發現,請求到的數據已經改變了,相應的其他參數也變成了第二頁的,所以如果需要ajax分頁時,只需要傳入相應頁碼參數,即可獲取到該頁面數據,可以結合搜索等條件限制。
二、軟刪除
1)實現軟連接
我們在上一章學習了刪除模型,通過在模型實例上調用 delete 方法:
News::find($id)->delete();
在上面的例子中,我們在調用 delete 方法之前會先從數據庫中取回模型。不過,如果你已知道了模型中的主鍵,則可以不用取回模型就能直接刪除它。若要直接刪除,請調用 destroy 方法:
News::destroy(1); News::destroy([1, 2, 3]);
除此之外呢,我們還可以通過查詢來刪除,前面為查詢條件,后面跟著的是delete();
除了從數據庫中移除實際記錄,Eloquent 也可以「軟刪除」模型。當模型被軟刪除時,它們并不會真的從數據庫中被移除。而是會在模型上設置一個 deleted_at 屬性并將其添加到數據庫。如果模型有一個非空值 deleted_at,代表模型已經被軟刪除了。要在模型上啟動軟刪除,則必須在模型上使用 IlluminateDatabaseEloquentSoftDeletes trait 并添加 deleted_at 字段到你的 $dates 屬性上:
完成模型添加后,我們需要打開數據庫表,給表News里面添加一字段 deleted_at 類型 為 timestamp類型,此時當我們刪除數據的時候,會自動給表里該項數據這一個字段添加該段時間,等查詢的時候,會過濾掉這一項不為空的數據。從而達到了軟刪除。
要確認指定的模型實例是否已經被軟刪除,可以使用 trashed 方法:
if ($news->trashed()) {
//}
查詢被軟刪除的模型#
包含被軟刪除的模型#如上所述,被軟刪除的模型將會自動從所有的查詢結果中排除。不過,你可以通過在查詢中調用 withTrashed 方法來強制查詢已被軟刪除的模型:
$news = AppNews::withTrashed()
->where("id", 1) ->get();withTrashed 方法也可以被用在 關聯 查詢:
$news->history()->withTrashed()->get();
只取出軟刪除數據#
onlyTrashed 會只取出軟刪除數據:
$news = AppNews::onlyTrashed()
->where("id", 1) ->get();恢復被軟刪除的模型#
有時候你可能希望「取消刪除」一個已被軟刪除的模型。要恢復一個已被軟刪除的模型到有效狀態,則可在模型實例上使用 restore 方法:
$news->restore();
你也可以在查詢上使用 restore 方法來快速地恢復多個模型:
AppNews::withTrashed()
->where("id", 1) ->restore();與 withTrashed 方法類似,restore 方法也可以被用在 關聯 查詢上:
$news->history()->restore();
永久地刪除模型#
有時候你可能需要真正地從數據庫移除模型。要永久地從數據庫移除一個已被軟刪除的模型,則可使用 forceDelete 方法:
// 強制刪除單個模型實例...
$news->forceDelete();// 強制刪除所有相關模型...
$news->history()->forceDelete();
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/31976.html
摘要:一路由目錄眾所周知,對于我們熟知的任何一款框架,例如路由系統都是極其重要的存在。文件用于定義界面的路由。定義在中的路由都是無狀態的,并且被分配了中間件組。生成的控制器為每個行為保留了方法,同時還包括了處理動作和的聲明注釋。 一、路由目錄 眾所周知,對于我們熟知的任何一款PHP框架,例如TP、CI、YII、路由系統都是極其重要的存在。 對于laravel框架也一樣,對于數據庫的操作,無非...
摘要:新增一篇新聞新增失敗輸入不符合要求請輸入標題請輸入內容新增文章上面代碼中的是為了防攻擊的,每個表單都必須存在。 本文我將結合簡單例子,完成laravel框架下的增刪改查,希望會對大家有所幫助。在進行之前,大家應該保證自己的數據庫鏈接無誤,artisan命令能正常使用,路由鏈接無問題。 一、創建控制器、路由避免影響其他路由,我們先注釋掉之前聯系時編寫的所有路由。因為上一章我們已經學會建立...
摘要:打開瀏覽器輸入,如無意外,將出現如下圖,表示框架安裝成功。四系統內部后臺管理系統這個是框架自帶的后臺登錄管理系統,只需要簡單的命令即可運行。出現上圖即為,創建模型成功。 在PHP個各種web開發框架中,laravel算是一款簡潔、優雅的開發框架,本人也剛剛接觸到laravel,通過學習大神們的一些文章,下面是我的一些心得體會,希望可以給初學者一些幫助,大家一起進步。言歸正傳: 本人環境...
摘要:忽略該字段的映射省略創建數據訪問層接口,需要繼承,第一個泛型參數是實體對象的名稱,第二個是主鍵類型。 SpringBoot 是為了簡化 Spring 應用的創建、運行、調試、部署等一系列問題而誕生的產物,自動裝配的特性讓我們可以更好的關注業務本身而不是外部的XML配置,我們只需遵循規范,引入相關的依賴就可以輕易的搭建出一個 WEB 工程 上一篇介紹了Spring JdbcTempl...
閱讀 3049·2021-09-03 10:33
閱讀 1276·2019-08-30 15:53
閱讀 2625·2019-08-30 15:45
閱讀 3386·2019-08-30 14:11
閱讀 536·2019-08-30 13:55
閱讀 2587·2019-08-29 15:24
閱讀 1915·2019-08-26 18:26
閱讀 3571·2019-08-26 13:41