成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

laravel 模型事件幾種用法

KavenFan / 1208人閱讀

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


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

路由中定義:

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

在 EventServiceProvider 定義對應關系

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

event 中注入要操作的類
listen 中handle 方法注入對應事件類

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

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

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

直接在相關 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 - 對象已經 ready 但未寫入數(shù)據(jù)庫
? created - 對象已經寫入數(shù)據(jù)庫
? updating - 對象已經修改但未寫入數(shù)據(jù)庫
? updated - 修改已經寫入數(shù)據(jù)庫
? saving - 對象創(chuàng)建或者已更新但未寫入數(shù)據(jù)庫
? saved - 對象創(chuàng)建或者更新已經寫入數(shù)據(jù)庫
? deleting - 刪除前
? deleted - 刪除后
? restoring - 恢復軟刪除前
? restored - 恢復軟刪除后

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

轉載請注明本文地址:http://systransis.cn/yun/25633.html

相關文章

  • Laravel核心解讀--完結篇

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

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

    1. 預備知識 1.1 composer 基本用法 1.1.1 參考文章 composer 基本用法 1.1.2 要求掌握的知識點 composer 依賴管理 composer 自動加載(關鍵) 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)大廠面試總結

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

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

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

    xfee 評論0 收藏0

發(fā)表評論

0條評論

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