Skip to main content

¿Qué es Eloquent ORM?

Laravel incluye un mapeador objeto-relacional (ORM) llamado Eloquent. Eloquent simplifica la interacción con la base de datos e implementa el patrón ActiveRecord. Con Eloquent, defines una clase “modelo” por cada tabla de la base de datos. A través del modelo puedes obtener, insertar, actualizar y eliminar registros.
Antes de usar Eloquent, configura la conexión a la base de datos en config/database.php. Por defecto se usan las variables DB_* del archivo .env.

Crear un modelo

Genera un modelo con el comando Artisan make:model.
Para crear también la migración, usa la opción -m.
Los modelos se crean en el directorio app/Models.

Correspondencia entre modelo y tabla

Eloquent deduce el nombre de la tabla a partir del nombre de la clase. El nombre en snake_case y en plural se convierte en el nombre de la tabla. Si la tabla no sigue la convención, indícalo con la propiedad $table.

Timestamps

Por defecto Eloquent gestiona automáticamente las columnas created_at y updated_at. Si añades $table->timestamps() en la migración, se rellenan solas al guardar o actualizar. Para desactivarlo, pon $timestamps a false.

Protección de mass assignment

Al guardar datos en bloque con Eloquent hay que configurar la protección de mass assignment.

fillable

Indica las columnas asignables con la propiedad $fillable.

guarded

Al contrario, $guarded indica columnas no asignables.
Si $guarded es un array vacío se permite la asignación a todas las columnas. Al pasar directamente entrada del usuario hay riesgo de sobrescribir columnas no previstas, así que se recomienda usar $fillable con las columnas permitidas explícitas.

Flujo de ejecución de una consulta Eloquent

Cómo se ejecuta internamente una consulta como User::where()->get():

Operaciones CRUD básicas

Obtener registros (Read)

Todos los registros:
Con condiciones:

Crear registros (Create)

Inserta un registro con create (necesita $fillable).
También creando una instancia y asignando propiedades.

Actualizar registros (Update)

Recupera el modelo, cambia valores y llama a save.
update permite actualizar varias columnas de una vez.
También actualizar varios registros que cumplan una condición.

Eliminar registros (Delete)

Elimina con delete.
También puedes eliminar por ID directamente.

Métodos de consulta básicos

Ejemplo práctico: operaciones con el modelo Post

Controlador que opera sobre la tabla posts creada mediante migración.
Al escribir Post $post como argumento del método, Laravel resuelve automáticamente el modelo desde el parámetro de la ruta (route model binding). Ya no necesitas escribir Post::findOrFail($id) a mano.

Ciclo de vida de los eventos del modelo

Flujo de eventos al invocar save(). Los eventos difieren entre creación y actualización, pero saving y saved se disparan en ambos casos.

Próximos pasos

Migraciones

Repasa cómo crear con migraciones las tablas que usa Eloquent.
Última modificación el 13 de julio de 2026