ป้ายกำกับ: forceDeleting

Laravel: Observer Trigger Event created, deleted, updatedLaravel: Observer Trigger Event created, deleted, updated

เพราะว่ามีการ cache ข้อมูลบางส่วนไว้เป็น file เมื่อมีการแก้ไขข้อมูลผ่าน model ในกระบวนการ created, creating, deleted, deleting, forceDeleted, forceDeleting, restored, restoring, updated, updating จะต้องไป แก้ไขหรือสร้างไฟล์พวกนี้ด้วย ใน Laravel สามารถทำได้โดยใช้ Observer

  1. สร้าง Observer โดยใช้คำสั่ง
    php artisan make:observer { class name }
    เช่น
    php artisan make:observer CategoryObserver
  2. แก้ไฟล์ model ที่จะให้ ป้า Observer เช่น SourceCode/app/Observers/CategoryObserver.php
    <?php
    
    namespace App\Observers;
    
    use App\Http\Controllers\AssetCacheController;
    use App\Models\Category;
    
    class CategoryObserver
    {
     private function createdUpdateAssetCache (Category $item) {
     $controller = new AssetCacheController () ;
    
     $controller->cacheSelectOptions ('category_id', 'Category') ;
     }
    
     private function created (Category $item) {
     $this->createdUpdateAssetCache ($item) ;
     }
    
     public function deleted (Category $item) {
     $this->createdUpdateAssetCache ($item) ;
     }
    
     public function forceDeleted (Category $item) {
     $this->createdUpdateAssetCache ($item) ;
     }
    
     public function updated (Category $item) {
     $this->createdUpdateAssetCache ($item) ;
     }
    }
    
    อธิบาย
    บรรทัดที่ 5 อ้างถึง class ที่จะทำงานให้
    บรรทัดที่ 6 model ที่ให้ Observers เฝ้ามอง
    บรรทัดที่ 10 เป็น function ที่สั่งให้ทำงาน เพราะว่า event อื่น ๆ ทำงานเหมือน ๆ กัน เลยรวมไว้ที่เดียวกัน จะได้เขียนง่าย ๆ แก้ ง่าย ๆ
    บรรทัดที่ 17 คือ ส่วนที่จับ event ที่ต้องการให้ บรรทัดที่ 10 ทำงาน
  3. แก้ไฟล์ model ที่จะให้ ป้า Observer เช่น SourceCode/app/Models/Category.php
    <?php
    
    namespace App\Models;
    
    use App\Observers\CategoryObserver;
    use Illuminate\Database\Eloquent\Attributes\ObservedBy;
    use Illuminate\Database\Eloquent\Model;
    
    #[ObservedBy ([CategoryObserver::class]) ]
    class Category extends Model
    {
    
    อธิบาย
    บรรทัดที่ 5 อ้างถึง class ของป้า Observer ที่จะเฝ้าดู
    บรรทัดที่ 6 class Observers อย่าลืมเหล่าแม่บ้าน
    บรรทัดที่ 9 บอกไปเลยว่า ป้ามองอย่างใกล้ชิด

ในตอนนี้ ตัว model Observer จะมี event คือ

  • created: ที่ต้องการรันหลังสร้างข้อมูล
  • creating: ที่ต้องการรันก่อนสร้างข้อมูล
  • deleted: ที่ต้องการรันหลังลบข้อมูล
  • deleting: ที่ต้องการรันก่อนลบข้อมูล
  • forceDeleted: ที่ต้องการรันหลังลบข้อมูลอย่างถาวร
  • forceDeleting: ที่ต้องการรันก่อนลบข้อมูลอย่างถาวร
  • restored: ที่ต้องการรันหลังกู้คืนข้อมูล
  • restoring: ที่ต้องการรันก่อนกู้คืนข้อมูล
  • updated: ที่ต้องการรันหลังอัพเดตข้อมูล
  • updating: ที่ต้องการรันก่อนอัพเดตข้อมูล