【问题标题】:Pass variable to laravel model boot将变量传递给 laravel 模型引导
【发布时间】:2019-05-26 07:00:50
【问题描述】:

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

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

但我知道我的控制器上有一个删除许多“批次”的功能,并且我希望仅在删除所有“批次”而不是每次删除“批次”时执行操作。

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

我的模型如下所示:

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

    static::deleted(function($modele) {

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

    }
 }

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    模型事件旨在为单个模型工作。

    您应该改用 Laravel Events,而不是绑定到模型。

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

    LotsDeleted::class => PerformOtherAction::class
    

    使用php artisan event:generate 创建这些类

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

    event(new LotsDeleted());
    

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

    【讨论】:

    • 感谢您的解释。那么事件和辅助函数有什么区别呢?
    • 我不知道你的问题是否正确:辅助函数只是一种调用事件调度器的便捷方式,它会触发事件对象。
    猜你喜欢
    • 2015-01-27
    • 2014-01-05
    • 2016-04-14
    • 2016-04-03
    • 1970-01-01
    • 2020-08-03
    • 2017-11-11
    • 2015-11-06
    • 1970-01-01
    相关资源
    最近更新 更多