10 TRUCOS DE LARAVEL ELOQUENT QUE AHORRAN CÓDIGO

findOrFail()

Busca un registro por ID y lanza automáticamente una excepción ModelNotFoundException (error 404) si no existe.

$user = User::findOrFail($id);

Ventaja: Evitas tener que comprobar manualmente si el registro existe.

firstOrCreate()

Busca un registro con las condiciones dadas. Si no existe, lo crea.

$user = User::firstOrCreate(
['email' => 'user@example.com'],
['name' => 'John']
);

Ideal para evitar registros duplicados.

Más información detallada:FirstOrCreate vs UpdateOrCreate en Laravel

updateOrCreate()

Busca un registro. Si existe lo actualiza, si no existe lo crea. Todo en una sola operación limpia.

$user = User::updateOrCreate(
['email' => 'user@example.com'],
['name' => 'John']
);
Lectura recomendada:FirstOrCreate vs UpdateOrCreate en Laravel

pluck()

Obtiene solo los valores de una columna concreta, sin necesidad de recorrer los modelos.

$emails = User::pluck('email');
$users  = User::pluck('name', 'id'); // clave-valor
Artículo completo: Pluck en Laravel: Qué hace y cómo utilizarlo

value()

Cuando solo necesitas el valor de una sola columna de un registro.

$email = User::where('id', 1)->value('email');

Mucho más eficiente que recuperar el modelo completo.

exists()

Comprueba si existen registros que cumplan una condición, sin traer los datos.

$exists = User::where('email', $email)->exists();

Más limpio y rápido que hacer count() > 0 o recuperar el modelo.

with()

Carga relaciones de forma eager para evitar el problema N+1.

$users = User::with('posts')->get();
Descubre 10 trucos avanzados con este método: 10 Trucos Avanzados de Laravel Eloquent con with

withCount()

Cuenta los registros relacionados sin cargarlos.

$users = User::withCount('posts')->get();
// Accedes con: $user->posts_count

Perfecto para dashboards y estadísticas.

Artículo completo: 10 Trucos Avanzados de Laravel Eloquent con with

whereHas()

Filtra modelos basándote en condiciones de sus relaciones.

$users = User::whereHas('posts', function ($query) {
$query->where('published', true);
})->get();

Muy potente para filtros basados en relaciones.

Más ejemplos avanzados aquí: 10 Trucos Avanzados de Laravel Eloquent con with

when()

Construye consultas condicionales de forma limpia, sin usar if desordenados.

$users = User::query()
->when($request->role, function ($query, $role) {
$query->where('role', $role);
})
->get();

Ideal para búsquedas, filtros y consultas dinámicas.

Artículo completo: 10 Trucos Avanzados de Laravel Eloquent con with

Resumen rápido (Cheat Sheet)

Método Uso principal
"findOrFail()" Buscar o fallar
"firstOrCreate()" Buscar o crear
"updateOrCreate()" Actualizar o crear
"pluck()" Extraer valores de columna
"value()" Obtener un solo valor
"exists()" Comprobar existencia
"with()" Eager loading de relaciones
"withCount()" Contar relaciones
"whereHas()" Filtrar por relaciones
"when()" Consultas condicionales