Php -&燃气轮机;当->;时对模型执行performDeleteOnModel();减量()<;=0未触发删除/删除事件

Php -&燃气轮机;当->;时对模型执行performDeleteOnModel();减量()<;=0未触发删除/删除事件,php,laravel,events,eloquent,listener,Php,Laravel,Events,Eloquent,Listener,我正在使用所有者和ResourceDefinition模型之间的资源枢轴模型 进行交易时,我在附加枢轴“数量”字段上使用递减: DB::事务(函数()使用($givenItem、$target、$quantity){ $target->receive($givenItem,$quantity); $givenItem->pivot->decreation('quantity',$quantity); }); 我已在更新事件中注册了一个可调用函数,以执行模型(和关系)的删除: protected

我正在使用所有者和ResourceDefinition模型之间的资源枢轴模型

进行交易时,我在附加枢轴“数量”字段上使用递减:

DB::事务(函数()使用($givenItem、$target、$quantity){
$target->receive($givenItem,$quantity);
$givenItem->pivot->decreation('quantity',$quantity);
});
我已在更新事件中注册了一个可调用函数,以执行模型(和关系)的删除:

protected static function booted():void
{
/**
*因为资源只是其所有者和ResourceDefinition之间的轴心
*当它减少到0时,我们需要将其删除
*/
静态::更新(静态函数(self$模型){
如果($model->quantity performDeleteOnModel();//我也尝试了->删除(),但我的模型没有被删除。。。。
}
});
}
但对于某种所有者(这是一种多态关系),我需要在数量到达地面时删除所有者,因此我创建了一个在删除模型时应触发的事件:

//在我的资源模型类中
受保护的$dispatchesEvents=[
'删除'=>删除::类
];
//我的活动:
类删除
{
公共资源模式$资源;
公共函数构造(ResourceModel$resource)
{
日志::调试('来自事件');
$this->resource=$resource;
}
}
//我的听众
类可回收建筑
{
公共函数句柄(删除$event)
{
Log::debug('来自侦听器');
}
}
侦听器发现已激活,因此我不需要注册事件(所有其他功能都正常)

我使用日志来避免代码逻辑让您大吃一惊,但结果是,我尝试触发事件两次,但没有注册来自事件或侦听器的日志:

[2020-11-01 21:24:14] local.DEBUG: from model
[2020-11-01 21:23:18] local.DEBUG: from model

有人知道为什么会发生这种情况吗?

静态::更新(
它正在工作?是的,模型::更新中的日志::调试按预期记录。我发现performDeleteOnModel不会触发删除和删除事件。这就是为什么我实际上没有调用事件和侦听器的原因。但是自从->删除()不执行已删除的查询(请不要问我为什么)。如何删除透视模型并从自身触发事件?
static::update(
它正在工作?是的,模型::更新中的日志::调试按预期记录。我发现performDeleteOnModel没有触发删除和删除事件。这就是为什么我实际上没有调用事件和侦听器。但是由于->删除()没有执行删除的查询(请不要问我为什么).如何删除透视模型并从其自身触发事件?