🗑️ Eliminar registros con Eloquent

🗑️ Eliminar registros con Eloquent

En esta lección aprenderás cómo eliminar registros de la base de datos utilizando Eloquent ORM de Laravel. Laravel ofrece varios métodos seguros y eficientes para borrar datos, tanto individuales como múltiples, manteniendo la integridad del sistema.

🧩 1️⃣ Eliminar un registro específico

La forma más sencilla es recuperar el modelo que deseas eliminar y luego llamar al método delete():

use App\Models\Producto;

$producto = Producto::find(3);
$producto->delete();
        

💡 Este método elimina el registro de la base de datos y ejecuta los eventos del modelo (como deleting o deleted).

🧹 2️⃣ Eliminar varios registros con condiciones

Si necesitas eliminar múltiples registros que cumplan cierta condición, puedes usar where() combinado con delete():

Producto::where('stock', 0)->delete();
        

⚙️ Este comando eliminará todos los productos sin stock de una sola vez.

♻️ 3️⃣ Eliminar por ID directamente

También puedes eliminar registros directamente por su identificador usando el método destroy():

Producto::destroy(5);

// También puedes pasar múltiples IDs
Producto::destroy([6, 7, 8]);
        

📘 Este método es ideal cuando ya conoces los identificadores de los registros a eliminar.

🧠 4️⃣ Uso de Soft Deletes (eliminación lógica)

Laravel incluye una característica llamada Soft Deletes, que permite “eliminar” registros sin borrarlos realmente de la base de datos.

Para activarlo, primero agrega el trait SoftDeletes al modelo:

use Illuminate\Database\Eloquent\SoftDeletes;

class Producto extends Model
{
    use SoftDeletes;

    protected $dates = ['deleted_at'];
}
        

Luego, asegúrate de tener una columna deleted_at en tu tabla (puedes crearla con una migración):

$table->softDeletes();
        

Ahora, cuando elimines un registro, Laravel marcará el campo deleted_at sin borrar físicamente el registro.

🪄 5️⃣ Restaurar registros eliminados (Soft Delete)

Con Soft Deletes, puedes recuperar registros “eliminados” fácilmente:

$producto = Producto::withTrashed()->find(3);
$producto->restore();
        

💡 También puedes recuperar todos los registros eliminados:

Producto::onlyTrashed()->restore();
        

✅ Conclusión

  • 🗑️ delete() elimina un registro específico.
  • 🧹 where()->delete() borra múltiples registros con condiciones.
  • ♻️ destroy() elimina directamente por ID o array de IDs.
  • 🧠 SoftDeletes permite eliminar sin perder los datos.
  • 🔁 restore() revierte una eliminación lógica fácilmente.

En la siguiente lección aprenderás a trabajar con relaciones entre modelos en Eloquent — una de las características más potentes del framework Laravel.



Publicar un comentario

0 Comentarios