24 💥 CRUD COMPLETO Productos: Editar, Eliminar y Limpieza Total de Imágenes | Laravel 12 E-commerce

Duración: 18 min
Módulo: 📦 Módulos Esenciales (Categorías y Productos) 17-24 Lección 8 de 8

Descripción

Lección 24: 💥 CRUD Completo de Productos: Editar, Eliminar y Limpieza Total de Imágenes

Este capítulo marca la culminación del módulo de productos al implementar las acciones de edición y eliminación, asegurando un control de inventario completo y una gestión de archivos robusta y sin residuos en el servidor.

💰 Mejora en la Visualización de Precios

Antes de iniciar con el CRUD (Crear, Leer, Actualizar, Borrar) completo, se realiza una mejora estética y funcional:

  • Inclusión de la Divisa: Se consulta el modelo Ajuste para obtener la divisa configurada en el sistema [02:18].
  • Concatenación: El símbolo de la divisa se concatena y se muestra junto al precio de compra y precio de venta en la vista de índice (index), mejorando la claridad de los datos financieros [02:49].

✍️ Actualización de Datos (Update)

Se desarrolla la funcionalidad para modificar la información de un producto existente:

  • Vista de Edición: Se crea la vista edit.blade.php, que es una copia de la vista create, y se puebla con los datos actuales del producto mediante la propiedad value de los inputs [06:23].
  • Método PUT: El formulario de edición utiliza la directiva @method('PUT') y el token de seguridad CSRF para enviar la solicitud al controlador [06:12].
  • Validación en Update: La validación de los datos se ajusta para permitir que el código del producto sea único, exceptuando el ID del producto que se está editando [11:10].
  • Resultado: Tras la actualización, se redirige al listado con un mensaje de éxito ("Producto actualizado exitosamente") [12:20].

❌ Eliminación con Limpieza Total (Destroy)

La implementación del borrado es sofisticada para evitar la acumulación de archivos huérfanos:

  • Eliminación en Cascada: Se aprovecha la configuración previa de la llave foránea onDelete('cascade') en las migraciones de producto_imagen [15:09].
    • Al eliminar un producto (ID principal), la base de datos automáticamente borra todos los registros asociados en la tabla de imágenes.
  • Limpieza de Archivos Físicos: Aunque el registro de la BD se borra en cascada, es crucial eliminar los archivos físicos del servidor (ruta storage/app/public/productos).
    • Antes de eliminar el producto, se itera sobre todas las imágenes relacionadas [13:42].
    • Para cada imagen, se verifica si el archivo existe en el disco (Storage::exists) y luego se elimina (Storage::delete) [14:07].
  • Comprobación: Este proceso garantiza que, al eliminar un producto, desaparezcan sus registros de la base de datos y todos sus archivos del servidor, asegurando un sistema limpio y eficiente [16:42].