成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

laravel5.5手寫教程4Eloquent ORM分頁及軟刪除

mindwind / 2819人閱讀

摘要:從而達(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í),之前簡單了解了路由和Eloquent ORM的基本用法,今天我們繼續(xù)來學(xué)習(xí)它的其他用途,在深入了解Laravel 的 Eloquent ORM之前,我們先用他做一個(gè)簡單的分頁功能,完成上一章CURD中少了的分頁。

一、基于Eloquent ORM的分頁操作:

后臺(tái)分頁常見基本分兩種,一種是跳轉(zhuǎn)分頁,一種是ajax分頁。
我們上一章學(xué)習(xí)了,增刪改查,已經(jīng)有現(xiàn)成的數(shù)據(jù)表和控制器等,為了測試方便,我們再往數(shù)據(jù)表里面添加幾條數(shù)據(jù)。


添加后,我們只要修改NewsController控制器里的index方法即可來練習(xí)分頁操作。


此時(shí)我們先注釋掉第19行的代碼,打印18行,打開瀏覽器 127.0.0.1/comment 查看:

此時(shí)我們打印出來的數(shù)據(jù)除了表中的前五條數(shù)據(jù)以外,我們還傳遞過來了當(dāng)前頁碼current_page,最后頁碼last_page,以及下一條頁碼url next_page_url,可以看出我們可以通過這種方式傳遞參數(shù)給API,進(jìn)行跳轉(zhuǎn)分頁。
頁鏈接為http://127.0.0.1:9999/comment/?page=頁碼數(shù);即可實(shí)現(xiàn)分頁。

下面我們來看ajax分頁,Eqoluent ORM是一個(gè)很完美地?cái)?shù)據(jù)庫應(yīng)用層組件,依然提供了分頁所需要的各種參數(shù),以滿足參數(shù)傳值的分頁。
打開19行注釋,注釋掉18行,重新打印,可以發(fā)現(xiàn)打印出來的數(shù)據(jù)不變,此時(shí)我們改變控制器中
var_dump(News::paginate(5,["*"],"page",1)->toArray()); 改為
var_dump(News::paginate(5,["*"],"page",2)->toArray());
此時(shí)我們會(huì)發(fā)現(xiàn),請求到的數(shù)據(jù)已經(jīng)改變了,相應(yīng)的其他參數(shù)也變成了第二頁的,所以如果需要ajax分頁時(shí),只需要傳入相應(yīng)頁碼參數(shù),即可獲取到該頁面數(shù)據(jù),可以結(jié)合搜索等條件限制。

二、軟刪除

1)實(shí)現(xiàn)軟連接
我們在上一章學(xué)習(xí)了刪除模型,通過在模型實(shí)例上調(diào)用 delete 方法:

News::find($id)->delete();

在上面的例子中,我們在調(diào)用 delete 方法之前會(huì)先從數(shù)據(jù)庫中取回模型。不過,如果你已知道了模型中的主鍵,則可以不用取回模型就能直接刪除它。若要直接刪除,請調(diào)用 destroy 方法:

News::destroy(1);
News::destroy([1, 2, 3]);

除此之外呢,我們還可以通過查詢來刪除,前面為查詢條件,后面跟著的是delete();
除了從數(shù)據(jù)庫中移除實(shí)際記錄,Eloquent 也可以「軟刪除」模型。當(dāng)模型被軟刪除時(shí),它們并不會(huì)真的從數(shù)據(jù)庫中被移除。而是會(huì)在模型上設(shè)置一個(gè) deleted_at 屬性并將其添加到數(shù)據(jù)庫。如果模型有一個(gè)非空值 deleted_at,代表模型已經(jīng)被軟刪除了。要在模型上啟動(dòng)軟刪除,則必須在模型上使用 IlluminateDatabaseEloquentSoftDeletes trait 并添加 deleted_at 字段到你的 $dates 屬性上:


完成模型添加后,我們需要打開數(shù)據(jù)庫表,給表News里面添加一字段 deleted_at 類型 為 timestamp類型,此時(shí)當(dāng)我們刪除數(shù)據(jù)的時(shí)候,會(huì)自動(dòng)給表里該項(xiàng)數(shù)據(jù)這一個(gè)字段添加該段時(shí)間,等查詢的時(shí)候,會(huì)過濾掉這一項(xiàng)不為空的數(shù)據(jù)。從而達(dá)到了軟刪除。

要確認(rèn)指定的模型實(shí)例是否已經(jīng)被軟刪除,可以使用 trashed 方法:

if ($news->trashed()) {

//

}

查詢被軟刪除的模型#
包含被軟刪除的模型#

如上所述,被軟刪除的模型將會(huì)自動(dòng)從所有的查詢結(jié)果中排除。不過,你可以通過在查詢中調(diào)用 withTrashed 方法來強(qiáng)制查詢已被軟刪除的模型:

$news = AppNews::withTrashed()

            ->where("id", 1)
            ->get();

withTrashed 方法也可以被用在 關(guān)聯(lián) 查詢:

$news->history()->withTrashed()->get();

只取出軟刪除數(shù)據(jù)#

onlyTrashed 會(huì)只取出軟刪除數(shù)據(jù):

$news = AppNews::onlyTrashed()

            ->where("id", 1)
            ->get();

恢復(fù)被軟刪除的模型#

有時(shí)候你可能希望「取消刪除」一個(gè)已被軟刪除的模型。要恢復(fù)一個(gè)已被軟刪除的模型到有效狀態(tài),則可在模型實(shí)例上使用 restore 方法:

$news->restore();

你也可以在查詢上使用 restore 方法來快速地恢復(fù)多個(gè)模型:

AppNews::withTrashed()

    ->where("id", 1)
    ->restore();

與 withTrashed 方法類似,restore 方法也可以被用在 關(guān)聯(lián) 查詢上:

$news->history()->restore();

永久地刪除模型#

有時(shí)候你可能需要真正地從數(shù)據(jù)庫移除模型。要永久地從數(shù)據(jù)庫移除一個(gè)已被軟刪除的模型,則可使用 forceDelete 方法:

// 強(qiáng)制刪除單個(gè)模型實(shí)例...
$news->forceDelete();

// 強(qiáng)制刪除所有相關(guān)模型...
$news->history()->forceDelete();

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/31976.html

相關(guān)文章

  • windows下laravel5.5手寫教程2路由Eloquent ORM操作(適合初學(xué)者)

    摘要:一路由目錄眾所周知,對于我們熟知的任何一款框架,例如路由系統(tǒng)都是極其重要的存在。文件用于定義界面的路由。定義在中的路由都是無狀態(tài)的,并且被分配了中間件組。生成的控制器為每個(gè)行為保留了方法,同時(shí)還包括了處理動(dòng)作和的聲明注釋。 一、路由目錄 眾所周知,對于我們熟知的任何一款PHP框架,例如TP、CI、YII、路由系統(tǒng)都是極其重要的存在。 對于laravel框架也一樣,對于數(shù)據(jù)庫的操作,無非...

    BlackFlagBin 評論0 收藏0
  • laravel5.5手寫教程3的基于資源路由的CURD操作(適合初學(xué)者)

    摘要:新增一篇新聞新增失敗輸入不符合要求請輸入標(biāo)題請輸入內(nèi)容新增文章上面代碼中的是為了防攻擊的,每個(gè)表單都必須存在。 本文我將結(jié)合簡單例子,完成laravel框架下的增刪改查,希望會(huì)對大家有所幫助。在進(jìn)行之前,大家應(yīng)該保證自己的數(shù)據(jù)庫鏈接無誤,artisan命令能正常使用,路由鏈接無問題。 一、創(chuàng)建控制器、路由避免影響其他路由,我們先注釋掉之前聯(lián)系時(shí)編寫的所有路由。因?yàn)樯弦徽挛覀円呀?jīng)學(xué)會(huì)建立...

    olle 評論0 收藏0
  • windows下laravel5.5手寫教程1(適合初學(xué)者)

    摘要:打開瀏覽器輸入,如無意外,將出現(xiàn)如下圖,表示框架安裝成功。四系統(tǒng)內(nèi)部后臺(tái)管理系統(tǒng)這個(gè)是框架自帶的后臺(tái)登錄管理系統(tǒng),只需要簡單的命令即可運(yùn)行。出現(xiàn)上圖即為,創(chuàng)建模型成功。 在PHP個(gè)各種web開發(fā)框架中,laravel算是一款簡潔、優(yōu)雅的開發(fā)框架,本人也剛剛接觸到laravel,通過學(xué)習(xí)大神們的一些文章,下面是我的一些心得體會(huì),希望可以給初學(xué)者一些幫助,大家一起進(jìn)步。言歸正傳: 本人環(huán)境...

    GeekGhc 評論0 收藏0
  • 一起來學(xué)SpringBoot | 第六篇:整合SpringDataJpa

    摘要:忽略該字段的映射省略創(chuàng)建數(shù)據(jù)訪問層接口,需要繼承,第一個(gè)泛型參數(shù)是實(shí)體對象的名稱,第二個(gè)是主鍵類型。 SpringBoot 是為了簡化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問題而誕生的產(chǎn)物,自動(dòng)裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴就可以輕易的搭建出一個(gè) WEB 工程 上一篇介紹了Spring JdbcTempl...

    Dionysus_go 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<