Рекурсивное событие Laravel на удаленной модели не запускается - PullRequest
0 голосов
/ 16 октября 2018

У меня есть древовидная структура модели.

Я пытаюсь удалить родителя, и все потомки должны быть удалены с помощью отправленного события deleted.

Я также пытаюсь удалить всеизображения всех узлов-потомков.

Я использую MongoDb ext, Treetrait, как вы можете видеть.

Я зарегистрировал некоторые сообщения, чтобы увидеть, было ли отправлено событиевызывается несколько раз, но вызывается только один раз при удалении родительской модели.

У меня такое ощущение, что отправленное событие deleted не запускается из-за события mass delete.

Кто-нибудь сталкивался с чем-то подобным?

Я использую ext https://github.com/beyondlex/mongotree и который использует ext https://github.com/lazychaser/laravel-nestedset

Это модель:

<?php

namespace App;

use Jenssegers\Mongodb\Eloquent\Model as Model;
use Lex\Mongotree\TreeTrait;

class Department extends Model
{
    use TreeTrait;

    protected $dispatchesEvents = [
        'deleted' => \App\Events\DepartmentDeleted::class,
    ];

}

Это событие:

<?php

namespace App\Events;

use App\Department;

class DepartmentDeleted
{

    public $department;

    public function __construct(Department $department)
    {
        $this->$department = $department;

        \Log::debug(json_encode($department->getAttributes()));

        $destination_path = public_path('/images/');

        if (
            $department->image['en'] != ''
            &&
            file_exists($destination_path . $department->image['en'])
        ) {
            \Log::debug('deleting file en' . $department->image['en']);
            unlink($destination_path . $department->image['en']);
        }

        if (
            $department->image['ar'] != ''
            &&
            file_exists($destination_path . $department->image['ar'])
        ) {
            \Log::debug('deleting file ar' . $department->image['ar']);
            unlink($destination_path . $department->image['ar']);
        }

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...