🔄 Actualizar registros con Eloquent
Una vez que tenemos datos en la base de datos, podemos modificarlos fácilmente con Eloquent ORM. Laravel ofrece múltiples formas para actualizar registros, desde la modificación directa del modelo hasta el uso de métodos de actualización masiva.
✏️ 1️⃣ Actualizar un registro existente
La forma más común de actualizar un registro es obtener el modelo, modificar sus atributos y luego guardar los cambios con save():
use App\Models\Producto;
$producto = Producto::find(1);
$producto->precio = 199.99;
$producto->stock = 25;
$producto->save();
💡 Este método ejecuta una consulta UPDATE solo para ese registro, manteniendo la integridad del modelo.
⚙️ 2️⃣ Actualización masiva con update()
También puedes actualizar registros directamente sin cargarlos en memoria usando update():
Producto::where('categoria', 'Electrónica')
->update(['descuento' => 10]);
📘 Este método es útil para actualizaciones globales, ya que ejecuta la consulta directamente en la base de datos.
🧠 3️⃣ Actualizar múltiples campos de forma segura
Si tu modelo tiene los campos protegidos por $fillable, puedes realizar actualizaciones masivas en un solo paso:
$producto = Producto::find(2);
$producto->update([
'nombre' => 'Teclado mecánico RGB',
'precio' => 85.50,
'stock' => 30
]);
⚠️ Asegúrate de definir los campos permitidos en tu modelo para evitar vulnerabilidades:
// app/Models/Producto.php
protected $fillable = ['nombre', 'precio', 'stock', 'categoria', 'descuento'];
🔄 4️⃣ Actualizar o crear con updateOrCreate()
Laravel permite actualizar un registro existente o crearlo si no existe usando updateOrCreate():
Producto::updateOrCreate(
['nombre' => 'Ratón inalámbrico'],
['precio' => 25.99, 'stock' => 50]
);
💡 Este método es muy útil para importar datos o sincronizar registros.
🧩 5️⃣ Eventos al actualizar
Eloquent dispara eventos automáticamente cuando un modelo es actualizado, lo que te permite ejecutar acciones personalizadas:
// app/Models/Producto.php
protected static function booted()
{
static::updated(function ($producto) {
Log::info('Producto actualizado: ' . $producto->nombre);
});
}
🧠 Esto es ideal para auditorías, logs o notificaciones automáticas.
✅ Conclusión
- ✏️ Usa save() para actualizar registros individuales.
- ⚙️ Usa update() para actualizaciones masivas o rápidas.
- 🧠 Define $fillable para evitar asignaciones masivas inseguras.
- 🔄 updateOrCreate() es ideal para mantener sincronizados los datos.
- 📜 Los eventos de Eloquent te permiten reaccionar automáticamente a los cambios.
En la próxima lección aprenderemos cómo eliminar registros con Eloquent de forma segura y controlada.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias