首頁  >  文章  >  後端開發  >  學習laravel的模型事件的幾種用法

學習laravel的模型事件的幾種用法

不言
不言原創
2018-06-13 11:27:151540瀏覽

這篇文章主要為大家介紹了關於laravel學習筆記之模型事件用法的相關資料,文中透過範例程式碼介紹的非常詳細,對大家學習或使用laravel具有一定的參考學習價值,需要的朋友可以參考借鑒,下面來跟著小編一起學習學習吧。

前言

本文主要為大家介紹了關於laravel模型事件用法的相關內容,文中透過範例程式碼介紹了laravel模型事件的多種用法,下面話不多說了,來一起看看詳細的介紹吧。

用法範例

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

#路由中定義:

Event::listen('eloquent.updated: App\Post',function (){
 dump('测试一下修改事件');
});
Route::post('/post/{id}', 'PostController@update');

二、產生事件與監聽器

在EventServiceProvider 定義對應關係

 protected $listen = [
  'App\Events\PostEvent' => [
    'App\Listeners\PostListener',
   ],
 ];

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 但未寫入資料庫

      • created - 物件已寫入資料庫

      • updating - 物件已修改但未寫入資料庫

#      • updated - 修改已寫入資料庫

      • saving - 物件建立或已更新但未寫入資料庫

##   •  建立或更新已寫入資料庫


      • deleting - 刪除前


      • deleted - 刪除後


      • deleted - 刪除後「刪除後」


##    前

      • restored - 恢復軟體刪除後

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

Laravel5框架中向視圖傳送array的學習

Laravel 5框架的模型與控制器以及視圖基礎流程的學習

####

以上是學習laravel的模型事件的幾種用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn