laravel學(xué)習(xí)筆記之模型事件的幾種用法示例
前言
本文主要給大家介紹了關(guān)于laravel模型事件用法的相關(guān)內(nèi)容,文中通過示例代碼介紹了laravel模型事件的多種用法,下面話不多說了,來一起看看詳細(xì)的介紹吧。
用法示例
一 、簡單粗魯(用于本地測試)
路由中定義:
Event::listen('eloquent.updated: App\Post',function (){ dump('測試一下修改事件'); }); Route::post('/post/{id}', 'PostController@update');
二 、生成事件和監(jiān)聽器
在 EventServiceProvider 定義對(duì)應(yīng)關(guān)系
protected $listen = [ 'App\Events\PostEvent' => [ 'App\Listeners\PostListener', ], ];
php artisan event:generate //生成文件
event 中注入要操作的類
listen 中handle 方法注入對(duì)應(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
如果想對(duì)多個(gè)模型的updated 或 created 事件進(jìn)行一些操作,該不會(huì)每個(gè)模型都單獨(dú)寫一個(gè)吧.例如: 日志 .
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 - 對(duì)象已經(jīng) ready 但未寫入數(shù)據(jù)庫
• created - 對(duì)象已經(jīng)寫入數(shù)據(jù)庫
• updating - 對(duì)象已經(jīng)修改但未寫入數(shù)據(jù)庫
• updated - 修改已經(jīng)寫入數(shù)據(jù)庫
• saving - 對(duì)象創(chuàng)建或者已更新但未寫入數(shù)據(jù)庫
• saved - 對(duì)象創(chuàng)建或者更新已經(jīng)寫入數(shù)據(jù)庫
• deleting - 刪除前
• deleted - 刪除后
• restoring - 恢復(fù)軟刪除前
• restored - 恢復(fù)軟刪除后
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Laravel 5框架學(xué)習(xí)之模型、控制器、視圖基礎(chǔ)流程
- Laravel5.1 框架模型創(chuàng)建與使用方法實(shí)例分析
- Laravel5.1 框架模型一對(duì)一關(guān)系實(shí)現(xiàn)與使用方法實(shí)例分析
- Laravel5.1 框架模型工廠ModelFactory用法實(shí)例分析
- Laravel5.1 框架模型軟刪除操作實(shí)例分析
- Laravel5.1 框架模型查詢作用域定義與用法實(shí)例分析
- Laravel5.1 框架模型遠(yuǎn)層一對(duì)多關(guān)系實(shí)例分析
- Laravel模型事件的實(shí)現(xiàn)原理詳解
- laravel學(xué)習(xí)教程之關(guān)聯(lián)模型
- Laravel框架模型的創(chuàng)建及模型對(duì)數(shù)據(jù)操作示例
- Laravel 模型關(guān)聯(lián)基礎(chǔ)教程詳解
- Laravel5.1 框架模型多態(tài)關(guān)聯(lián)用法實(shí)例分析
相關(guān)文章
CI框架驗(yàn)證碼CAPTCHA輔助函數(shù)用法實(shí)例
這篇文章主要介紹了CI框架驗(yàn)證碼CAPTCHA輔助函數(shù)用法,以實(shí)例形式詳細(xì)講述了基于CAPTCHA輔助函數(shù)實(shí)現(xiàn)驗(yàn)證碼的方法,需要的朋友可以參考下2014-11-11PHP計(jì)算一年多少個(gè)星期和每周的開始和結(jié)束日期
這篇文章主要介紹了PHP計(jì)算每周的開始和結(jié)束日期,php實(shí)現(xiàn)計(jì)算一年多少周,同時(shí)計(jì)算出每一周的開始日期和結(jié)束日期,需要的朋友可以參考下2014-07-07PHP水印類,支持添加圖片、文字、填充顏色區(qū)域的實(shí)現(xiàn)
下面小編就為大家?guī)硪黄狿HP水印類,支持添加圖片、文字、填充顏色區(qū)域的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02yii2中添加驗(yàn)證碼的實(shí)現(xiàn)方法
這篇文章主要介紹了yii2中添加驗(yàn)證碼的實(shí)現(xiàn)方法,實(shí)例分析了Yii2中實(shí)現(xiàn)添加驗(yàn)證碼的具體步驟與相關(guān)功能代碼,需要的朋友可以參考下2016-01-01PHP網(wǎng)頁游戲?qū)W習(xí)之Xnova(ogame)源碼解讀(十四)
這篇文章主要介紹了PHP網(wǎng)頁游戲Xnova(ogame)源碼解讀的資源更新頁面部分,需要的朋友可以參考下2014-06-06YII2框架中使用RBAC對(duì)模塊,控制器,方法的權(quán)限控制及規(guī)則的使用示例
這篇文章主要介紹了YII2框架中使用RBAC對(duì)模塊,控制器,方法的權(quán)限控制及規(guī)則的使用,結(jié)合實(shí)例形式分析了YII2框架RBAC對(duì)模塊,控制器,方法的權(quán)限控制及規(guī)則的使用相關(guān)原理與操作技巧,需要的朋友可以參考下2020-03-03關(guān)于laravel后臺(tái)模板laravel-admin select框的使用詳解
今天小編就為大家分享一篇關(guān)于laravel后臺(tái)模板laravel-admin select框的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10laravel框架實(shí)現(xiàn)去掉URL中index.php的方法
今天小編就為大家分享一篇laravel框架實(shí)現(xiàn)去掉URL中index.php的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10