"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Filamento: Exclua anexos ao excluir um registro

Filamento: Exclua anexos ao excluir um registro

Publicado em 2024-11-08
Navegar:195

Filament: Delete Attachments when Deleting a Record

Filament permite adicionar anexos a um registro, mas não os exclui quando você exclui o registro.

Para resolver esse problema, temos duas alternativas:

Ouça o evento de exclusão do modelo

Quando um modelo está prestes a ser excluído, ele dispara o evento de exclusão. Podemos ouvir este evento para acionar a funcionalidade responsável por excluir quaisquer anexos antes que o modelo não exista mais.

Dentro da classe do modelo podemos adicionar o método inicializado para registrar novos ouvintes de eventos no modelo.

class Project extends Model
{
    protected $fillable = [
        'title', 'slug', 'repository', 'description', 'thumbnail',
    ];

    /**
     * The "booted" method of the model.
     */
    protected static function booted(): void
    {
        static::deleting(function ($project) {
            Storage::disk('public')->delete($project->thumbnail);
        });
    }
}

Este código excluirá o anexo da miniatura antes de excluir o modelo.

Você pode ler mais sobre isso na documentação do Laravel https://laravel.com/docs/11.x/eloquent#events-using-closures

Modifique a ação de exclusão do Filament

Outra opção é alterar o comportamento da ação de exclusão.

protected function getActions(): array
{
    return [
        Actions\DeleteAction::make()
            ->after(function (Project $project) {
                // delete single
                if ($project->thumbnail) {
                    Storage::disk('public')->delete($project->thumbnail);
                }
            })
    ];
}

Você pode usar a opção que melhor atende aos seus requisitos, mas deve ter em mente que adicionar um ouvinte de evento excluirá o anexo quando seu modelo for excluído, sempre que tiver ocorrido por uma ação do Filament ou outra parte do código em seu aplicativo.

Isso é importante porque provavelmente determinará a opção que você deve escolher.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/sertxudev/filament-delete-attachments-when-deleting-a-record-1jhl?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3