《PHP實(shí)例:laravel學(xué)習(xí)筆記之模型事件的幾種用法示例》要點(diǎn):
本文介紹了PHP實(shí)例:laravel學(xué)習(xí)筆記之模型事件的幾種用法示例,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
前言PHP學(xué)習(xí)
本文主要給大家介紹了關(guān)于laravel模型事件用法的相關(guān)內(nèi)容,文中通過示例代碼介紹了laravel模型事件的多種用法,下面話不多說了,來一起看看詳細(xì)的介紹吧.PHP學(xué)習(xí)
用法示例PHP學(xué)習(xí)
一 、簡(jiǎn)單粗魯(用于本地測(cè)試)
PHP學(xué)習(xí)
路由中定義:PHP學(xué)習(xí)
Event::listen('eloquent.updated: App\Post',function (){ dump('測(cè)試一下修改事件'); }); Route::post('/post/{id}', 'PostController@update');
二 、生成事件和監(jiān)聽器
PHP學(xué)習(xí)
在 EventServiceProvider 定義對(duì)應(yīng)關(guān)系PHP學(xué)習(xí)
protected $listen = [ 'App\Events\PostEvent' => [ 'App\Listeners\PostListener', ], ];
php artisan event:generate //生成文件
event 中注入要操作的類
PHP學(xué)習(xí)
listen 中handle 方法注入對(duì)應(yīng)事件類
PHP學(xué)習(xí)
public function handle(PostEvent $event) { dump('測(cè)試一下修改事件'); }
最后在 post 模型中添加 'events' 屬性PHP學(xué)習(xí)
protected $events = [ 'updated' => PostListener::class ];
三 、利用框架的 boot 方法
PHP學(xué)習(xí)
直接在相關(guān) Model 中定義
PHP學(xué)習(xí)
public static function boot() { parent::boot(); static::updated(function($model) { dump('測(cè)試一下修改事件'); }); }
四 、定義Trait
PHP學(xué)習(xí)
如果想對(duì)多個(gè)模型的updated 或 created 事件進(jìn)行一些操作,該不會(huì)每個(gè)模型都單獨(dú)寫一個(gè)吧.例如: 日志 .
PHP學(xué)習(xí)
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 就可以了.
PHP學(xué)習(xí)
????? ? creating - 對(duì)象已經(jīng) ready 但未寫入數(shù)據(jù)庫(kù)
PHP學(xué)習(xí)
????? ? created - 對(duì)象已經(jīng)寫入數(shù)據(jù)庫(kù)
PHP學(xué)習(xí)
????? ? updating - 對(duì)象已經(jīng)修改但未寫入數(shù)據(jù)庫(kù)
PHP學(xué)習(xí)
????? ? updated - 修改已經(jīng)寫入數(shù)據(jù)庫(kù)
PHP學(xué)習(xí)
????? ? saving - 對(duì)象創(chuàng)建或者已更新但未寫入數(shù)據(jù)庫(kù)
PHP學(xué)習(xí)
????? ? saved - 對(duì)象創(chuàng)建或者更新已經(jīng)寫入數(shù)據(jù)庫(kù)
PHP學(xué)習(xí)
????? ? deleting - 刪除前
PHP學(xué)習(xí)
????? ? deleted - 刪除后
PHP學(xué)習(xí)
????? ? restoring - 恢復(fù)軟刪除前
PHP學(xué)習(xí)
????? ? restored - 恢復(fù)軟刪除后PHP學(xué)習(xí)
總結(jié)PHP學(xué)習(xí)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持.PHP學(xué)習(xí)
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/308.html