国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

laravel 模型事件幾種用法

KavenFan / 1203人閱讀

摘要:一簡(jiǎn)單粗魯用于本地測(cè)試路由中定義測(cè)試一下修改事件二生成事件和監(jiān)聽(tīng)器在定義對(duì)應(yīng)關(guān)系生成文件中注入要操作的類中方法注入對(duì)應(yīng)事件類測(cè)試一下修改事件最后在模型中添加屬性三利用框架的方法直接在相關(guān)中定義測(cè)試一下修改事件四定義如果想對(duì)多個(gè)模型的或事件進(jìn)


一 、簡(jiǎn)單粗魯(用于本地測(cè)試)

路由中定義:

Event::listen("eloquent.updated: AppPost",function (){
   dump("測(cè)試一下修改事件");
});
Route::post("/post/{id}", "PostController@update");
二 、生成事件和監(jiān)聽(tīng)器

在 EventServiceProvider 定義對(duì)應(yīng)關(guān)系

    protected $listen = [
        "AppEventsPostEvent" => [
                "AppListenersPostListener",
            ],
    ];
php artisan event:generate  //生成文件

event 中注入要操作的類
listen 中handle 方法注入對(duì)應(yīng)事件類

    public function handle(PostEvent $event)
    {
        dump("測(cè)試一下修改事件");
    }

最后在 post 模型中添加 "events" 屬性

    protected $events = [
         "updated" => PostListener::class
    ];
三 、利用框架的 boot 方法

直接在相關(guān) Model 中定義

    public static function boot() {
        parent::boot();
        
        static::updated(function($model) {
            dump("測(cè)試一下修改事件");
        });
    }
四 、定義Trait

如果想對(duì)多個(gè)模型的updated 或 created 事件進(jìn)行一些操作,該不會(huì)每個(gè)模型都多帶帶寫(xiě)一個(gè)吧.例如: 日志 .

trait LogRecord
{
    //注意,必須以 boot 開(kāi)頭
    public static function bootLogRecord()
    {
        foreach(static::getModelEvents() as $event) {
            static::$event(function ($model){
                $model->setRemind();
            });
        }
    }


    public static function getModelEvents()
    {
        if(isset(static::$recordEvents)){
            return static::$recordEvents;
        }
        return ["updated"];
    }

    public function setRemind()
    {
       dump("記錄邏輯操作");
    }
}

然后,在模型中use trait 就可以了.

? creating - 對(duì)象已經(jīng) ready 但未寫(xiě)入數(shù)據(jù)庫(kù)
? created - 對(duì)象已經(jīng)寫(xiě)入數(shù)據(jù)庫(kù)
? updating - 對(duì)象已經(jīng)修改但未寫(xiě)入數(shù)據(jù)庫(kù)
? updated - 修改已經(jīng)寫(xiě)入數(shù)據(jù)庫(kù)
? saving - 對(duì)象創(chuàng)建或者已更新但未寫(xiě)入數(shù)據(jù)庫(kù)
? saved - 對(duì)象創(chuàng)建或者更新已經(jīng)寫(xiě)入數(shù)據(jù)庫(kù)
? deleting - 刪除前
? deleted - 刪除后
? restoring - 恢復(fù)軟刪除前
? restored - 恢復(fù)軟刪除后

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25633.html

相關(guān)文章

  • Laravel核心解讀--完結(jié)篇

    摘要:過(guò)去一年時(shí)間寫(xiě)了多篇文章來(lái)探討了我認(rèn)為的框架最核心部分的設(shè)計(jì)思路代碼實(shí)現(xiàn)。為了大家閱讀方便,我把這些源碼學(xué)習(xí)的文章匯總到這里。數(shù)據(jù)庫(kù)算法和數(shù)據(jù)結(jié)構(gòu)這些都是編程的內(nèi)功,只有內(nèi)功深厚了才能解決遇到的復(fù)雜問(wèn)題。 過(guò)去一年時(shí)間寫(xiě)了20多篇文章來(lái)探討了我認(rèn)為的Larave框架最核心部分的設(shè)計(jì)思路、代碼實(shí)現(xiàn)。通過(guò)更新文章自己在軟件設(shè)計(jì)、文字表達(dá)方面都有所提高,在剛開(kāi)始決定寫(xiě)Laravel源碼分析地...

    laoLiueizo 評(píng)論0 收藏0
  • Laravel 運(yùn)行機(jī)制簡(jiǎn)略剖析

    1. 預(yù)備知識(shí) 1.1 composer 基本用法 1.1.1 參考文章 composer 基本用法 1.1.2 要求掌握的知識(shí)點(diǎn) composer 依賴管理 composer 自動(dòng)加載(關(guān)鍵) 1.2 DIP、IOC、DI、IOC 容器 詳情文章 2. Laravel 運(yùn)行機(jī)制剖析 2.1 場(chǎng)景 范例:http://laravel.com/test?name=chenxuelong 2.2 ...

    zhaofeihao 評(píng)論0 收藏0
  • [面試專題]一線互聯(lián)網(wǎng)大廠面試總結(jié)

    摘要:道阻且長(zhǎng)啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書(shū)簽?zāi)夸洖g覽器引擎用來(lái)查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來(lái) 道阻且長(zhǎng)啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...

    leap_frog 評(píng)論0 收藏0
  • [面試專題]一線互聯(lián)網(wǎng)大廠面試總結(jié)

    摘要:道阻且長(zhǎng)啊前端面試總結(jié)前端面試筆試面試騰訊一面瀏覽器工作原理瀏覽器的主要組件包括用戶界面包括地址欄后退前進(jìn)按鈕書(shū)簽?zāi)夸洖g覽器引擎用來(lái)查詢及操作渲染引擎的接口渲染引擎渲染界面和是基于兩種渲染引擎構(gòu)建的,使用自主研發(fā)的渲染引擎,和都使用網(wǎng)絡(luò)用來(lái) 道阻且長(zhǎng)啊TAT(前端面試總結(jié)) 前端 面試 筆試 面試 騰訊一面 1.瀏覽器工作原理 瀏覽器的主要組件包括: 用戶界面- 包括地址欄、后退/前...

    lemanli 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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