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 LaravelupdateOrCreate()
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']
);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-valorvalue()
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();withCount()
Cuenta los registros relacionados sin cargarlos.
$users = User::withCount('posts')->get();
// Accedes con: $user->posts_countPerfecto para dashboards y estadísticas.
Artículo completo: 10 Trucos Avanzados de Laravel Eloquent con withwhereHas()
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 withwhen()
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 withResumen 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 |