Askedio / laravel-soft-cascade

Cascade Delete & Restore when using Laravel SoftDeletes
https://medium.com/asked-io/cascading-softdeletes-with-laravel-5-a1a9335a5b4d
MIT License
705 stars 63 forks source link

Lumen: EventListeners not called/registered #119

Closed kbleeck closed 3 years ago

kbleeck commented 4 years ago

Description:

In Lumen 7.x, the Event Listeners in LumenEventServiceProvider are not properly registered and thus not called on delete. The boot() Method in Providers/LumenEventServiceProvider is never called by the framework and thus the event listeners are not properly registered.

Steps To Reproduce:

  1. Set up laravel-soft-cascade in a fresh lumen 7.x project
  2. create models and add SoftCascadeTrait, $softCascade and relations
  3. delete parent model
  4. children are not soft-deleted

How to Fix:

In Providers/LumenServiceProvider: simply moving $this->app->register(LumenEventServiceProvider::class); from boot() to register():

// src\Providers\LumenServiceProvider.php
<?php

namespace Askedio\SoftCascade\Providers;

use Illuminate\Support\ServiceProvider;

class LumenServiceProvider extends ServiceProvider
{
    /**
     * Register the service provider.
     *
     * @return void
     */
    public function register()
    {
        $this->app->register(LumenEventServiceProvider::class); // move this here
    }

    /**
     * Register routes, translations, views and publishers.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}
maguilar92 commented 3 years ago

@kbleeck Following laravel documentation is in the correct site.

https://lumen.laravel.com/docs/7.x/providers#writing-service-providers

As mentioned in docs the boot method "This method is called after all other service providers have been registered".

Oranzh commented 3 years ago

I also encountered this problem, and how do u solve that, thanks @kbleeck