亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

laravel學(xué)習(xí)筆記之模型事件的幾種用法示例

 更新時(shí)間:2017年08月15日 09:33:33   作者:大福哥  
這篇文章主要給大家介紹了關(guān)于laravel學(xué)習(xí)筆記之模型事件用法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用laravel具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來(lái)跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。

前言

本文主要給大家介紹了關(guān)于laravel模型事件用法的相關(guān)內(nèi)容,文中通過(guò)示例代碼介紹了laravel模型事件的多種用法,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧。

用法示例

一 、簡(jiǎn)單粗魯(用于本地測(cè)試)

路由中定義:

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

二 、生成事件和監(jiān)聽(tīng)器

在 EventServiceProvider 定義對(duì)應(yīng)關(guān)系

 protected $listen = [
  'App\Events\PostEvent' => [
    'App\Listeners\PostListener',
   ],
 ];
php artisan event:generate //生成文件

event 中注入要操作的類(lèi)

listen 中handle 方法注入對(duì)應(yīng)事件類(lèi)

 public function handle(PostEvent $event)
 {
  dump('測(cè)試一下修改事件');
 }

最后在 post 模型中添加 'events' 屬性

 protected $events = [
   'updated' => PostListener::class
 ];

三 、利用框架的 boot 方法

直接在相關(guān) Model 中定義

 public static function boot() {
  parent::boot();
  
  static::updated(function($model) {
   dump('測(cè)試一下修改事件');
  });
 }

四 、定義Trait

如果想對(duì)多個(gè)模型的updated 或 created 事件進(jìn)行一些操作,該不會(huì)每個(gè)模型都單獨(dú)寫(xiě)一個(gè)吧.例如: 日志 .

trait LogRecord
{
 //注意,必須以 boot 開(kāi)頭
 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 但未寫(xiě)入數(shù)據(jù)庫(kù)

      • created - 對(duì)象已經(jīng)寫(xiě)入數(shù)據(jù)庫(kù)

      • updating - 對(duì)象已經(jīng)修改但未寫(xiě)入數(shù)據(jù)庫(kù)

      • updated - 修改已經(jīng)寫(xiě)入數(shù)據(jù)庫(kù)

      • saving - 對(duì)象創(chuàng)建或者已更新但未寫(xiě)入數(shù)據(jù)庫(kù)

      • saved - 對(duì)象創(chuàng)建或者更新已經(jīng)寫(xiě)入數(shù)據(jù)庫(kù)

      • deleting - 刪除前

      • deleted - 刪除后

      • restoring - 恢復(fù)軟刪除前

      • restored - 恢復(fù)軟刪除后

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論