無涯教程: Laravel 8 - 模型觀察者

youou發表於2021-09-09

在這裡,我將向您展示laravel 8觀察者示例。該示例將幫助您如何使用laravel 8模型觀察器。
Laravel觀察者用於對模型事件監聽器進行分組。 Laravel Observers將偵聽模型方法(例如建立,更新和刪除)的事件。
Eloquent hook

  • Retrieved:查詢資料後。

  • Creating:在建立資料之前。

  • Created:建立資料後。

  • Updating:在更新資料之前。

  • Updated:更新資料後。

  • Saving:儲存資料之前(建立或更新)。

  • Saved:儲存資料後(建立或更新)。

  • Deleting:在刪除資料或軟刪除之前。

  • Deleted:刪除或軟刪除資料後。

  • Restoring:軟刪除資料恢復前。

  • Restoring:軟刪除資料恢復後。

現在在這裡,我們將看到一個簡單的示例,我有一個產品模型(Product Model),它具有name,slug,price和unique_id列。因此,我需要建立一個僅以價格命名的記錄。但是當它建立時,我需要根據名稱生成slug並自動生成unique_id。
app/Models/Product.php

slug = Str::slug($product->name);
    }
    /**
     * Handle the Product "created" event.
     *
     * @param  AppModelsProduct  $product
     * @return void
     */
    public function created(Product $product)
    {
        $product->unique_id = 'PR-'.$product->id;
        $product->save();
    }
    /**
     * Handle the Product "updated" event.
     *
     * @param  AppModelsProduct  $product
     * @return void
     */
    public function updated(Product $product){

    }

    /**
     * Handle the Product "deleted" event.
     *
     * @param  AppModelsProduct  $product
     * @return void
     */
    public function deleted(Product $product){
    }


    /**
     * Handle the Product "restored" event.
     *
     * @param  AppModelsProduct  $product
     * @return void
     */
    public function restored(Product $product){
    }

  

    /**
     * Handle the Product "force deleted" event.
     *
     * @param  AppModelsProduct  $product
     * @return void
     */
    public function forceDeleted(Product $product){
    }
}

在提供者上註冊Observers類。
app/Providers/EventServiceProvider.php

 [
            SendEmailVerificationNotification::class,
        ],
    ];
    /**
     * Register any events for your application.
     *
     * @return void
     */
    public function boot()
    {
        Product::observe(ProductObserver::class);
    }
}

建立示例路由:
routes/web.php

|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('product', [ProductController::class, 'index']);

建立控制器路由:
app/Http/Controllers/ProductController.php

 'Platinum 1',

            'price' => 10

        ]);

        dd($product);

    }

}


現在您可以執行專案並檢視。

圖片描述


<pre>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4729/viewspace-2796951/,如需轉載,請註明出處,否則將追究法律責任。

相關文章