如何解决Laravel模型观察者方法没有被解雇
在Laravel(7.x)中,如果Observers
表的记录已更新为{,则尝试使用device_inventories
更新subscriber_devices
表的记录的值{1}}。
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
的记录id = 2
更新为subscriber_devices
,则status = inactive
的值应更新为device_inventories / status
。假定该设备已损坏,需要将其发送以进行更换。
AppServiceProvider.php
replacement
App \ Observers \ ObserverChangeDeviceInventoryStatusToReplacement.php
use App\SubscriberDevice;
use App\Observers\ObserverChangeDeviceInventoryStatusToReplacement;
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
SubscriberDevice::observe(ObserverChangeDeviceInventoryStatusToReplacement::class);
}
}
App \ SubscriberDevice.php
use App\DeviceInventory;
use App\SubscriberDevice;
class ObserverChangeDeviceInventoryStatusToReplacement
{
public function updated(SubscriberDevice $SubscriberDevice)
{
DeviceInventory::where('id',$SubscriberDevice->device_inventory_id)->update([
'status' => 'replacement'
]);
}
}
观察者方法似乎没有触发。我在做什么错??
解决方法
感谢@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',]);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。