Cómo Editar y Actualizar Registros con Laravel Livewire CRUD Completo Tailwind + MySQL
Cómo Editar y Actualizar Registros con Laravel Livewire
En este tutorial aprenderás paso a paso cómo editar y actualizar registros utilizando Laravel Livewire. Esta guía forma parte de un CRUD profesional construido con Laravel + Livewire + TailwindCSS + MySQL, donde implementamos un flujo completo sin recargar la página y con validaciones reactivas.
- 🛠 Carga de datos desde la base de datos
- 📌 Edición de registros con Livewire
- ✔ Validaciones técnicas en tiempo real
- ⚡ Actualización sin recargar (AJAX-like)
- 🔄 Componentes reactivos y escalables
En el artículo anterior vimos cómo crear registros (Create). Ahora avanzamos al siguiente nivel del CRUD: la edición y actualización (Update).
📌 1. ¿Por qué usar Livewire para editar registros?
Livewire es ideal para aplicaciones administrativas, módulos ERP, sistemas logísticos o cualquier entorno donde se requiera:
- ✔ Cargar datos dinámicamente
- ✔ Mostrar formularios reactivos
- ✔ Validaciones sin refrescar el navegador
- ✔ Mantener la lógica en PHP sin JavaScript personalizado
- ✔ Integración perfecta con modelos Eloquent
Su capacidad para sincronizar datos entre el frontend y el backend lo convierte en la herramienta perfecta para editar registros de forma rápida y profesional.
📌 2. Componente Livewire para Edición (Update)
A continuación mostramos el componente TransportistaEdit donde se cargan los datos del registro, se validan y se actualizan en la base de datos:
transportista = $transportista;
$this->tipodocumentos = Tipodocumento::select('id', 'abbreviation')->get();
$this->tipodocumento_id = $transportista->tipodocumento_id;
$this->numdoc = $transportista->numdoc;
$this->nomrazonsocial = $transportista->nomrazonsocial;
$this->address = $transportista->address;
$this->nromtc = $transportista->nromtc;
$this->predeterminado = $transportista->predeterminado;
$this->state = $transportista->state;
}
protected $rules = [
'tipodocumento_id' => 'required|exists:tipodocumentos,id',
'numdoc' => 'required|min:8|max:20',
'nomrazonsocial' => 'required|min:3|max:150',
'address' => 'required|max:200',
'nromtc' => 'required|max:20',
'predeterminado' => 'boolean',
'state' => 'boolean',
];
public function update()
{
$this->validate();
$this->transportista->update([
'tipodocumento_id' => $this->tipodocumento_id,
'numdoc' => $this->numdoc,
'nomrazonsocial' => $this->nomrazonsocial,
'address' => $this->address,
'nromtc' => $this->nromtc,
'predeterminado' => $this->predeterminado,
'state' => $this->state,
]);
$this->emit('alert', 'El Transportista se actualizó correctamente');
return redirect()->route('transportista.list');
}
public function render()
{
return view('livewire.admin.transportista-edit');
}
}
?>
Este componente gestiona la carga inicial, las validaciones, la edición y la actualización del registro.
📌 3. Vista del formulario con HTML, TailwindCSS y Livewire
En esta sección construimos la vista del formulario que permite registrar transportistas. Incluye campos dinámicos, validaciones visibles en tiempo real y un diseño claro y profesional usando TailwindCSS junto con el poder reactivo de Livewire.
Cada campo está conectado al componente mediante wire:model, lo que permite una experiencia interactiva sin recargar la página y mostrando los errores conforme el usuario escribe.
<div class="max-w-3xl p-6 mx-auto bg-white rounded shadow">
<h2 class="mb-4 text-xl font-semibold text-gray-700">
Crear Transportista
</h2>
<!-- Tipo de Documento -->
<div class="mb-4">
<x-jet-label value="Tipo Documento" />
<select wire:model="tipodocumento_id"
class="w-full h-10 border-gray-300 rounded-md shadow-sm">
<option value="" disabled>Seleccione</option>
@foreach ($tipodocumentos as $tipodocumento)
<option value="{{ $tipodocumento->id }}">
{{ $tipodocumento->abbreviation }}
</option>
@endforeach
</select>
<x-jet-input-error for="tipodocumento_id" />
</div>
<!-- Numero Documento -->
<div class="mb-4">
<x-jet-label value="Número Documento" />
<x-jet-input type="text" wire:model="numdoc" class="w-full"/>
<x-jet-input-error for="numdoc" />
</div>
<!-- Razón Social -->
<div class="mb-4">
<x-jet-label value="Razón Social" />
<x-jet-input type="text" wire:model="nomrazonsocial" class="w-full"/>
<x-jet-input-error for="nomrazonsocial" />
</div>
<!-- Dirección -->
<div class="mb-4">
<x-jet-label value="Dirección" />
<x-jet-input type="text" wire:model="address" class="w-full"/>
<x-jet-input-error for="address" />
</div>
<!-- Nro MTC -->
<div class="mb-4">
<x-jet-label value="Nro MTC" />
<x-jet-input type="text" wire:model="nromtc" class="w-full"/>
<x-jet-input-error for="nromtc" />
</div>
<!-- Botón Guardar -->
<button wire:click="save"
class="px-4 py-2 font-semibold text-white bg-green-600 rounded hover:bg-green-700">
Guardar
</button>
</div>
Gracias al comportamiento reactivo de Livewire, todos los mensajes de error, la selección de datos y las interacciones del formulario se ejecutan sin recargar la página, mejorando la usabilidad y reduciendo el tiempo de desarrollo.
📌 4. Explicación de funciones clave
| Función | Descripción técnica |
|---|---|
mount() |
Carga el registro desde la base de datos y llena las propiedades reactivas. |
$this->validate() |
Ejecuta reglas estrictas antes de permitir la actualización. |
wire:model |
Sincroniza los campos del formulario con el backend. |
$transportista->update() |
Actualiza el registro utilizando Eloquent de forma segura. |
| Eventos Livewire | Permiten enviar alertas y redirecciones limpias. |
📌 5. Ventajas de implementar Update con Livewire
- ✔ Interacciones instantáneas sin JavaScript
- ✔ Integración con modelos y reglas de validación de Laravel
- ✔ Formularios reactivos fáciles de mantener
- ✔ Ideal para ERP, sistemas logísticos y paneles administrativos
- ✔ Reduce errores de usuario gracias a validaciones inmediatas
🚀 Conclusión
En este artículo aprendiste cómo editar y actualizar registros en Laravel Livewire utilizando un componente totalmente reactivo, validaciones avanzadas y un diseño limpio con TailwindCSS. Este módulo forma parte del CRUD profesional que estamos construyendo:
- 🟡 Listado con DataTable
- 🟢 Crear (Create)
- 🔵 Editar (Update) ← este artículo
- 🔴 Eliminar (Delete)
Al finalizar tendrás un CRUD moderno, rápido y escalable, listo para producción.
📞 Contáctanos
En Ticom Software somos especialistas en Laravel, PHP, Livewire y Odoo ERP. Desarrollamos sistemas web personalizados y brindamos soporte técnico a empresas.
- 🔗 Web: https://www.ticomsoftware.com
- 📧 Email: info@ticomsoftware.com
- 📱 WhatsApp: +51 996 929 478
- 🔵 Facebook: https://www.facebook.com/ticomperuscrl/
- 📸 Instagram: https://www.instagram.com/ticom.peru/
- 🎵 TikTok: https://www.tiktok.com/@ticomscrl