Laravel 模型观察者方法没有被触发

Laravel model observer method doesn't get fired

在我的 Laravel (7.x) 中,我正在尝试使用 Observers 来更新 device_inventories table if 记录的值 if 记录subscriber_devices table 更新为 inactive.

device_inventories         |    subscriber_devices
-----------------------    |    --------------------------------
# | title    | status      |    # | device_inventory_id | status
-----------------------    |    --------------------------------
1 | device-1 | active      |    1 |                   1 | active
2 | device-2 | active      |    2 |                   2 | active

例如:
假设我将 subscriber_devices 的记录 id = 2 更新为 status = inactive 那么 device_inventories / status 的值应该更新为 replacement。假设,设备损坏,需要送去更换。

AppServiceProvider.php

use App\SubscriberDevice;
use App\Observers\ObserverChangeDeviceInventoryStatusToReplacement;

class AppServiceProvider extends ServiceProvider
{
   public function boot()
   {
     SubscriberDevice::observe(ObserverChangeDeviceInventoryStatusToReplacement::class);
   }
}

App\Observers\ObserverChangeDeviceInventoryStatusToReplacement.php

use App\DeviceInventory;
use App\SubscriberDevice;

class ObserverChangeDeviceInventoryStatusToReplacement
{
   public function updated(SubscriberDevice $SubscriberDevice)
   {
      DeviceInventory::where('id', $SubscriberDevice->device_inventory_id)->update([
         'status' => 'replacement'
      ]);
   }
}

App\SubscriberDevice.php

class SubscriberDevice extends Model
{
   protected $table = 'subscriber_devices';

   public function _status($token, $reason)
   {
      self::where('token', $token)->update([
         'reason' => $reason,
         'status' => 'inactive',
      ]);
   }
}

观察者方法似乎没有触发。我做错了什么?

感谢@EmptyBrain。

App\SubscriberDevice.php

class SubscriberDevice extends Model
{
   protected $table = 'subscriber_devices';

   public function _status($token, $reason)
   {
      $self = self::where('token', $token)->first();

      $self->update([
         'reason' => $reason,
         'status' => 'inactive',
      ]);
   }
}

引用