久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      Laravel如何使用Observer實現(xiàn)日志管理模塊

      Laravel使用Observer(觀察者)實現(xiàn)日志管理模塊

      寫在前面:
      這里實現(xiàn)日志管理寫了兩篇,第一篇是簡單的模型增刪改監(jiān)聽并記錄日志。第二篇主要介紹的是通過導(dǎo)入文件進行批量數(shù)據(jù)處理無法很好的被監(jiān)聽處理到,這一部分的數(shù)據(jù)處理邏輯如何被記錄下來。詳細(xì)請看Laravel日志管理記錄導(dǎo)入文件后的數(shù)據(jù)變化。

      1、創(chuàng)建observer文件,我這里是要記錄倉庫庫存模塊的操作日志,所以執(zhí)行下面的語句,會在app/Observers下面創(chuàng)建WarehouseInventoryObserver文件。

      php artisan make:observer WarehouseInventoryObserver --model=WarehouseInventory

      由于模型都是放在app/Models下面,所以要指定路徑。

      php artisan make:observer WarehouseInventoryObserver --model=Models/WarehouseInventory

      在AppProvidersAppServiceProvider下面開啟observer

      public function boot()     {         WarehouseInventory::observe(WarehouseInventoryObserver::class);     }

      2、監(jiān)聽該模塊下的增刪改操作,這里使用Repository當(dāng)然也可以直接使用model。created、updated、deleted分別監(jiān)聽WarehouseInventory模型的新增、更新和刪除的操作。

      <?phpnamespace AppObservers;use AppModelsWarehouse;use AppModelsWarehouseInventory;use AppRepositoriesActionLogRepository;use IlluminateSupportArr;use IlluminateSupportFacadesAuth;class WarehouseInventoryObserver{     protected $user_id;      protected $warehouse;      protected $actionLogRepository;      public function __construct(         Warehouse $warehouse,         ActionLogRepository $actionLogRepository     )     {         $this->user_id = Auth::user() ? Auth::user()->id : null;         $this->warehouse = $warehouse->pluck('name', 'id');         $this->actionLogRepository = $actionLogRepository;     }      //創(chuàng)建     public function created(WarehouseInventory $warehouseInventory)     {         if (!empty($this->user_id)) {             $attributes = $warehouseInventory->getAttributes();             $attributes = Arr::only($attributes, ['warehouse_id', 'seller_sku', 'quantity', 'box']);             $warehouse = $this->warehouse->get($attributes['warehouse_id']);             //拼接數(shù)據(jù)             $data = [                 'module' => 'warehouse_inventory',                 'user_id' => $this->user_id,                 'type' => 'create',                 'content' => [                     'warehouse' => $warehouse,                     'seller_sku' => $attributes['seller_sku'],                     'original_quantity' => 0,                     'current_quantity' => $attributes['quantity'],                     'box' => $attributes['box']                 ]             ];              $this->actionLogRepository->makeModel()->create($data);         }     }      //更新     public function updated(WarehouseInventory $warehouseInventory)     {         if (!empty($this->user_id)) {             $original = $warehouseInventory->getOriginal();             $dirty = $warehouseInventory->getDirty();             $dirty = Arr::except($dirty, ['remark', 'updated_at']);             if (count($dirty)) {                 if (Arr::has($dirty, 'warehouse_id')) {                     $warehouse = $this->warehouse->get($dirty['warehouse_id']);                 } else {                     $warehouse = $this->warehouse->get($original['warehouse_id']);                 }                 //拼接數(shù)據(jù)                 $data = [                     'module' => 'warehouse_inventory',                     'user_id' => $this->user_id,                     'type' => 'update',                     'content' => [                         'warehouse' => $warehouse,                         'seller_sku' => $original['seller_sku'],                         'original_quantity' => $original['quantity'],                         'current_quantity' => $dirty['quantity'],                         'box' => (Arr::has($dirty, 'box')) ? $dirty['box'] : $original['box']                     ]                 ];                  $this->actionLogRepository->makeModel()->create($data);             }         }     }      //刪除     public function deleted(WarehouseInventory $warehouseInventory)     {         if (!empty($this->user_id)) {              $original = $warehouseInventory->getOriginal();             $warehouse = $this->warehouse->get($original['warehouse_id']);             //拼接數(shù)據(jù)             $data = [                 'module' => 'warehouse_inventory',                 'user_id' => $this->user_id,                 'type' => 'delete',                 'content' => [                     'warehouse' => $warehouse,                     'seller_sku' => $original['seller_sku'],                     'original_quantity' => $original['quantity'],                     'current_quantity' => 0,                     'box' => $original['box']                 ]             ];              $this->actionLogRepository->makeModel()->create($data);         }     }}

      3、數(shù)據(jù)庫
      Laravel如何使用Observer實現(xiàn)日志管理模塊


      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號