1
resposta

Fiz um pouco diferente, e decidi compartilhar

public function removerSerie(int $idSerie): string
    {
         //devido ao relacionamento deve-se realizar o destroy em cascata,
        //neste caso será realizado manualmente.

        $nomeSerie = '';
        DB::transaction(function() use ($idSerie, &$nomeSerie){
            $serie = Serie::find($idSerie);
            $nomeSerie = $serie->nome;
            $capaSerie = $serie->capa;
            $this->removerTemp($serie);

            $serie->delete();

            if(!is_null($capaSerie)){
                $apagaCapaStorage = new SerieApagada($capaSerie);
                event($apagaCapaStorage);
            }
        });

        return $nomeSerie;

    }

eu basicamente armazeno o dado da $serie->capa em uma variável auxiliar, o evento espera apenas isso, pois apenas esse dado é preciso para eliminar o arquivo do storage:

 $capaSerie = $serie->capa;

além disso só há a necessidade de disparar o evento se houver uma capa, do contrário não há motivo para toda vez disparar este evento, então fiz o teste antes de instanciar e emitir o evento...

if(!is_null($capaSerie)){
    $apagaCapaStorage = new SerieApagada($capaSerie);
    event($apagaCapaStorage);
}
1 resposta

Boa tarde RAFAEL DE,

Gostei muito do código implementado, acredito que condiz com o proposto sobre a tarefa.

Caso você possuir alguma dúvida compartilha ela aqui conosco para que possamos lhe auxiliar e sanar suas dúvidas.

Ahh e não esquece de avaliar o tópico como solucionado caso esteja sanada a dúvida.

Abraço e até logo!!!