63 CRUD UPDATE datos de IPTV desde la TABLA de la BASE de DATOS con(LARAVELyMYSQL)FULLSTACK
Duración: 10 minDescripción
💾 Lección 63: Implementación de la Función ACTUALIZAR (UPDATE)
Esta lección avanzada detalla el proceso para completar el ciclo de edición: recibir los datos del formulario, validar los cambios, manejar la subida de una nueva imagen (si aplica) y persistir el registro en la base de datos mediante el método update() de Laravel.
1. 🖥️ Lógica del Controlador: Método IptvController@update [00:17]
La función update() es la encargada de procesar la solicitud PATCH/PUT que proviene del formulario de edición.
1.1. 🆔 Recepción de Datos y ID
- La función update(Request $request, id) recibe dos parámetros:
- El objeto $request, que contiene los nuevos datos del formulario.
- El $id, que identifica el registro a actualizar en la tabla.
1.2. 🛡️ Ajuste de la Validación (Validation) [00:42]
- Problema: En la creación, el campo imagen era required (obligatorio). Si se mantiene esta regla en la actualización, obligaría al usuario a subir una nueva imagen incluso si solo quiere cambiar el nombre o la URL.
- Solución: Se modifica la regla de validación para la imagen, eliminando la regla required. La validación solo se mantiene en los campos nombre y url [00:51].
2. 🔍 Búsqueda y Actualización del Registro [02:23]
A diferencia del método store (que crea una nueva instancia), el método update debe buscar y modificar la instancia existente.
Búsqueda del Registro: Se utiliza el modelo Iptv con el método find($id) para cargar el objeto del canal que se está actualizando.
PHP
$iptv = Iptv::find($id);
- Asignación de Valores: Los campos de texto (nombre y url) se actualizan directamente con los valores del $request [03:53].
3. 🖼️ Gestión Condicional de Archivos (Imágenes) [04:05]
Este es el paso más crítico, ya que requiere reemplazar la imagen en el servidor para evitar que se acumulen archivos obsoletos.
3.1. ❓ Condición de Reemplazo
Se utiliza una estructura condicional (if) para verificar si el usuario ha cargado un nuevo archivo en el formulario de edición:
PHP
if ($request->hasFile('imagen')) { ... }
3.2. 🚮 Eliminación del Archivo Anterior
- Importante: Si existe una imagen anterior, debe ser eliminada del disco antes de subir la nueva.
- Se usa el facade Storage para borrar el archivo anterior, utilizando la ruta guardada en el objeto $iptv [05:20].
3.3. 💾 Almacenamiento del Nuevo Archivo
- Si la condición se cumple, se almacena el nuevo archivo en el servidor y se actualiza la ruta en la base de datos, tal como se hizo en el método store() [05:38].
3.4. ✅ Guardado Final
- Una vez que todos los valores, incluida la nueva ruta de imagen (si se cargó), han sido asignados al objeto $iptv, se llama al método save() para ejecutar la consulta UPDATE en la base de datos [06:11].
4. 📢 Redirección y Notificación de Éxito [06:19]
- Se redirecciona al usuario al listado de canales (index) y se adjunta un mensaje de sesión (Alert) confirmando que "se actualizó el canal de IPTV de la manera correcta" [06:33].
Resultado: El administrador puede actualizar cualquier dato del canal (nombre, URL o imagen) de forma independiente y verificar los cambios inmediatamente en el listado, sin acumular imágenes obsoletas en el servidor [07:59].
El próximo y último paso del CRUD será implementar la función de Eliminación (DESTROY) del módulo IPTV.
Lecciones
Apoya este proyecto
Si te gusta nuestro contenido, ¡apóyanos con una donación!
Donar por Airtm Donar por Binance¡Gracias por tu apoyo! ❤️