"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Filamento: eliminar archivos adjuntos al eliminar un registro

Filamento: eliminar archivos adjuntos al eliminar un registro

Publicado el 2024-11-08
Navegar:925

Filament: Delete Attachments when Deleting a Record

Filament le permite agregar archivos adjuntos a un registro, pero no los elimina cuando elimina el registro.

Para solucionar este problema, tenemos dos alternativas:

Escuche el evento de eliminación del modelo

Cuando un modelo está a punto de ser eliminado, activa el evento de eliminación. Podemos escuchar este evento para activar la funcionalidad responsable de eliminar cualquier archivo adjunto antes de que el modelo ya no exista.

Dentro de la clase del modelo podemos agregar el método de arranque para registrar nuevos detectores de eventos en el 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 eliminará la miniatura adjunta antes de eliminar el modelo.

Puedes leer más sobre esto en la documentación de Laravel https://laravel.com/docs/11.x/eloquent#events-using-closures

Modificar la acción de eliminación de Filament

Otra opción es cambiar el comportamiento de la acción de eliminación.

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

Puedes usar la opción que mejor se adapte a tus necesidades, pero debes tener en cuenta que agregar un detector de eventos eliminará el archivo adjunto cuando se elimine tu modelo, siempre que haya ocurrido por una acción de Filament u otra parte del código en tu aplicación.

Esto es importante porque probablemente determinará la opción que debes elegir.

Declaración de liberación Este artículo se reproduce en: https://dev.to/sertxudev/filament-delete-attachments-when-deleting-a-record-1jhl?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3