馃攧 Actualizar registros con Eloquent

馃攧 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.



Publicar un comentario

0 Comentarios