摘要:在日常處理一些用戶操作事件時,我們有時候需要記錄下來,方便以后查閱,或者大數據統計。
在日常處理一些用戶操作事件時,我們有時候需要記錄下來,方便以后查閱,或者大數據統計。
Laravel 在模型事件中處理起來很方便:https://laravel-china.org/docs/laravel/5.5/eloquent#events
Laravel 的模型事件有兩種方式,
設置dispatchesEvents屬性映射事件類
使用觀察器來注冊事件,這里介紹第二種
新建模型
php artisan make:model Log
創建遷移表:
php artisan make:migration create_logs_table
表的結構大概是這樣,可按需設計
engine = "InnoDB"; $table->increments("id"); $table->string("user_id")->comment("操作人的ID"); $table->string("user_name")->comment("操作人的名字,方便直接查閱"); $table->string("url")->comment("當前操作的URL"); $table->string("method")->comment("當前操作的請求方法"); $table->string("event")->comment("當前操作的事件,create,update,delete"); $table->string("table")->comment("操作的表"); $table->string("description")->default(""); $table->timestamps(); }); DB::statement("ALTER TABLE `logs` comment "操作日志表""); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists("logs"); } }運行遷移生成表
php artisan migrate
新建一個服務提供者統一注冊所有的模型事件觀察器(后面的名字可以自己起得形象一點)
php artisan make:provider ObserverLogServiceProvider
到/config/app.php中的providers數組注冊(大概如圖中)
在app目錄下新建文件夾Observers存放模型觀察器,并新建基類LogBaseServer并在構造函數構建基本屬性(CLI是因為在命令行執行時不存在用戶執行)
新建一個觀察器繼承基類LogBaseServer(User模型,方法的名字要對應文檔中的事件)
到新建的服務提供者ObserverLogServiceProvider中運行
為需要的模型注冊事件(我這挺多的,之后大概長這樣)
然后我們觸發一些事件(增刪改,表的數據就有了)
多對多的關聯插入不會出觸發模型(比如attach方法)
這時候就需要自己新建事件類來模擬(這里拿分配權限給角色粗略說一下)
1.在EventServiceProvider中的listen屬性綁定好事件
2.事件PermissionRoleEvent中的注入兩個參數,一個是角色,另一個是attach或者detach返回的數組
3.事件監聽器PermissionRoleEventLog也繼承基類LogBaseServer,這里就是根據傳入的數組id遍歷,然后創建日志
4.之后應用事件
更優雅的處理登錄注銷事件
1.在EventServiceProvider中的subscribe屬性綁定好處理的類
2.事件監聽類的方法
3.之后的效果就是這樣了:
END
原文地址
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/28427.html
摘要:別堵塞了傳輸層大多數事件處理器被當作傳輸層組件。解耦事件處理器開始本命題前,我們來使用一個示例。假想下把隊列處理器用來發送消息給用戶。盡量避免在事件處理器中摻雜太多的業務邏輯。 聲明:本文并非博主原創,而是來自對《Laravel 4 From Apprentice to Artisan》閱讀的翻譯和理解,當然也不是原汁原味的翻譯,能保證90%的原汁性,另外因為是理解翻譯,肯定會有錯誤的...
摘要:控制只是用來接收請求并請求邏輯處理類。事實上,業務邏輯無需感知網絡,網絡僅僅接入應用的傳輸機制,他不應超出應用中的路由和控制器的范疇。職責分離是編寫健壯應用的關鍵。其他通常,類庫應該以規范組織在我們的應用中。 聲明:本文并非博主原創,而是來自對《Laravel 4 From Apprentice to Artisan》閱讀的翻譯和理解,當然也不是原汁原味的翻譯,能保證90%的原汁性,另...
摘要:文章轉自視頻教程優雅的應用調試工具新擴展是由和開源的應用的調試工具。計劃任務列出已運行的計劃任務。該封閉函數會被序列化為一個長字符串,加上他的哈希與簽名如出一轍該功能將記錄所有異常,并可查看具體異常情況。事件顯示所有事件的列表。 文章轉自:https://laravel-china.org/topics/19013視頻教程:047. 優雅的應用調試工具--laravel/telesco...
摘要:我們設置好模型的觸發時機,當模型觸發事件,監聽器就會被調。雖然,我能通過模型觀察器快速實現,但是,我想引導你為單個事件觸發配置事件監聽器。現在,當模型調用事件時,我們注冊的事件監聽器也會被觸發并執行。 showImg(https://segmentfault.com/img/remote/1460000014033990); Laravel 模型事件允許你監聽模型生命周期內的多個關鍵點...
摘要:模型事件在的世界中你對大多數操作都會或多或少的觸發一些模型事件今天就來看一下模型事件的使用。事先已經定義好了個模型事件以供我們使用它們分別是。和會在數據庫中的真值修改前后觸發。監聽數據即將保存的事件。監聽數據從軟刪除狀態恢復后的事件。 模型事件 在 Laravel 的世界中,你對 Eloquent 大多數操作都會或多或少的觸發一些模型事件,今天就來看一下模型事件的使用。 Laravel...
閱讀 2928·2021-11-23 09:51
閱讀 3174·2021-11-12 10:36
閱讀 3211·2021-09-27 13:37
閱讀 3163·2021-08-17 10:15
閱讀 2593·2019-08-30 15:55
閱讀 2756·2019-08-30 13:07
閱讀 797·2019-08-29 16:32
閱讀 2651·2019-08-26 12:00