如何解决-> decrement<= 0不会触发删除/删除事件时,在模型上执行-> performDeleteOnModel
我正在使用所有者和ResourceDefinition模型之间的资源枢纽模型。
进行交易时,我在其他枢纽“数量”字段上使用了减量:
DB::transaction(function () use ($givenItem,$target,$quantity) {
$target->receive($givenItem,$quantity);
$givenItem->pivot->decrement('quantity',$quantity);
});
我已经将一个可调用函数注册到了更新事件中,以执行模型(和关系)的删除:
protected static function booted(): void
{
/**
* Because Resource is just a pivot between its owner and ResourceDefinition
* We need to delete it when it decrease to 0
*/
static::updating(static function (self $model) {
if ($model->quantity <= 0) {
Log::debug('from model');
$model->performDeleteOnModel(); // I've also tried ->delete(),but my model is not deleted....
}
});
}
但是对于某种所有者(这是一种多态关系),我需要在数量下降时删除所有者,因此我创建了一个事件,在删除模型时应将其触发:
// In my resource model class
protected $dispatchesEvents = [
'deleting' => Deleting::class
];
// My event:
class Deleting
{
public ResourceModel $resource;
public function __construct(ResourceModel $resource)
{
Log::debug('from event');
$this->resource = $resource;
}
}
// My listener
class DestroyAndRespawnCollectableBuilding
{
public function handle(Deleting $event)
{
Log::debug('from listener');
}
}
侦听器发现已激活,因此我不需要注册事件(所有其他功能都可以正常工作)
我使用日志的目的不是让您的代码逻辑引起您的注意,但是结果就在这里,我试图触发该事件两次,但是没有注册该事件或侦听器的日志:
[2020-11-01 21:24:14] local.DEBUG: from model
[2020-11-01 21:23:18] local.DEBUG: from model
有人知道为什么会这样吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。