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 定義對應(yīng)關(guān)系
protected $listen = [
'App\Events\PostEvent' => [
'App\Listeners\PostListener',
],
];
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 事件進(jìn)行一些操作,該不會每個模型都單獨(dú)寫一個吧.例如: 日志 .
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ù)軟刪除后
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- Laravel 5框架學(xué)習(xí)之模型、控制器、視圖基礎(chǔ)流程
- Laravel5.1 框架模型創(chuàng)建與使用方法實例分析
- Laravel5.1 框架模型一對一關(guān)系實現(xiàn)與使用方法實例分析
- Laravel5.1 框架模型工廠ModelFactory用法實例分析
- Laravel5.1 框架模型軟刪除操作實例分析
- Laravel5.1 框架模型查詢作用域定義與用法實例分析
- Laravel5.1 框架模型遠(yuǎn)層一對多關(guān)系實例分析
- Laravel模型事件的實現(xiàn)原理詳解
- laravel學(xué)習(xí)教程之關(guān)聯(lián)模型
- Laravel框架模型的創(chuàng)建及模型對數(shù)據(jù)操作示例
- Laravel 模型關(guān)聯(lián)基礎(chǔ)教程詳解
- Laravel5.1 框架模型多態(tài)關(guān)聯(lián)用法實例分析
相關(guān)文章
php封裝好的人民幣數(shù)值轉(zhuǎn)中文大寫類
這篇文章主要給大家分享了幾個php實現(xiàn)的人民幣數(shù)值轉(zhuǎn)中文大寫的代碼,非常的全面,有需要的小伙伴可以查看下2015-12-12
TP5(thinkPHP5框架)實現(xiàn)顯示錯誤信息及行號功能的方法
這篇文章主要介紹了TP5(thinkPHP5框架)實現(xiàn)顯示錯誤信息及行號功能的方法,結(jié)合實例形式分析了thinkPHP5顯示錯誤信息及行號的相關(guān)配置文件與設(shè)置修改方法,需要的朋友可以參考下2019-06-06
Thinkphp5+PHPExcel實現(xiàn)批量上傳表格數(shù)據(jù)功能
這篇文章主要介紹了Thinkphp5+PHPExcel實現(xiàn)批量上傳表格數(shù)據(jù)功能,需要的朋友可以參考下2017-11-11
thinkphp6使用mysql悲觀鎖解決商品超賣問題的實現(xiàn)
這篇文章主要介紹了thinkphp6使用mysql悲觀鎖解決商品超賣問題的實現(xiàn)2021-11-11
使用 PHPMAILER 發(fā)送郵件實例應(yīng)用
以前的mail(),已經(jīng)不在流行,所以放上最近用的實例,留做回憶;需要的朋友可以參考下2012-11-11
Laravel 不同生產(chǎn)環(huán)境服務(wù)器的判斷實踐
這篇文章主要介紹了Laravel 不同生產(chǎn)環(huán)境服務(wù)器的判斷實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
linux mint下安裝phpstorm2020包括JDK部分的教程詳解
這篇文章主要介紹了linux mint下安裝phpstorm2020包括JDK部分的教程詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09

