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);
}