首页 > 解决方案 > 将变量传递给 laravel 模型引导

问题描述

我的应用程序使用 laravel 5.8。我有变量称为“很多”,当我删除一个时,我想执行其他操作。

所以我在我的模型上使用了删除功能,一切正常。

但是知道我的控制器上有一个删除许多“地块”的功能,我希望只有在所有“地块”都被删除而不是每个“地块”删除时才执行操作。

所以我想知道是否有办法实现这一目标?也许我们可以将变量传递给引导函数来触发或不触发函数?

我的模型如下所示:

protected static function boot()
{
    parent::boot();

    static::deleted(function($modele) {

        Etage::doesntHave('lots')->delete();

    }
 }

标签: phplaravel

解决方案


模型事件被设计为适用于单个模型。

你应该改用 Laravel事件,而不是绑定到模型。

在数组EventServiceProvider.php中注册一个新的事件/监听器,比如$listens

LotsDeleted::class => PerformOtherAction::class

创建这些类php artisan event:generate

然后,当您完成删除所有Lot对象后,触发事件

event(new LotsDeleted());

您的侦听器的handle()函数将被调用,您可以执行其他操作。


推荐阅读