亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

laravel 模型事件幾種用法

KavenFan / 1245人閱讀

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


一 、簡單粗魯(用于本地測試)

路由中定義:

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

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

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

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

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

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

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

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

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

如果想對多個模型的updated 或 created 事件進行一些操作,該不會每個模型都多帶帶寫一個吧.例如: 日志 .

trait LogRecord
{
    //注意,必須以 boot 開頭
    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 - 對象已經(jīng) ready 但未寫入數(shù)據(jù)庫
? created - 對象已經(jīng)寫入數(shù)據(jù)庫
? updating - 對象已經(jīng)修改但未寫入數(shù)據(jù)庫
? updated - 修改已經(jīng)寫入數(shù)據(jù)庫
? saving - 對象創(chuàng)建或者已更新但未寫入數(shù)據(jù)庫
? saved - 對象創(chuàng)建或者更新已經(jīng)寫入數(shù)據(jù)庫
? deleting - 刪除前
? deleted - 刪除后
? restoring - 恢復(fù)軟刪除前
? restored - 恢復(fù)軟刪除后

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/25633.html

相關(guān)文章

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

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

    laoLiueizo 評論0 收藏0
  • Laravel 運行機制簡略剖析

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

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

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

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

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

    xfee 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<