
Carga automática mejorada de relaciones de modelos en Laravel
- Publicado el 16 junio, 2025
- Palabras: 107
¿Necesitas evitar consultas N+1 en modelos individuales? La carga automática de relaciones mejorada de Laravel ahora funciona directamente en modelos individuales, no solo en colecciones.

Anteriormente, la carga automática de relaciones solo estaba disponible en colecciones, por lo que era necesario habilitarla por separado para cada relación. Laravel ahora extiende esta funcionalidad a modelos individuales, lo que proporciona un control más granular sobre la optimización de la carga diligente. Veamos cómo funciona:
// Before
$post->tags->withRelationshipAutoloading();
$post->authors->withRelationshipAutoloading();
// After
$post->withRelationshipAutoloading();
// Also works on collections
$users = User::where('vip', true)->get();
return $users->withRelationshipAutoloading();
#Ejemplo práctico
A continuación se explica cómo podría utilizar esto en un sistema de gestión de contenido:
class PostController extends Controller
{
public function show(Post $post)
{
// Enable autoloading for the entire model
$post->withRelationshipAutoloading();
// Now all relationship access will auto-eager load
$view = view('posts.show', compact('post'));
// These won't cause N+1 queries
if ($post->tags->isNotEmpty()) {
$view->with('relatedPosts',
$this->findRelatedPosts($post->tags)
);
}
return $view;
}
public function showWithComments(Post $post)
{
// Selective autoloading for specific scenarios
$post->withRelationshipAutoloading();
return [
'post' => $post,
'comments' => $post->comments, // Auto-eager loaded
'author' => $post->author, // Auto-eager loaded
'tags' => $post->tags // Auto-eager loaded
];
}
}
Esta mejora proporciona un control más flexible sobre la carga de relaciones, lo que permite optimizar el rendimiento a nivel de modelo en lugar de gestionar cada relación por separado. Resulta especialmente útil al trabajar con modelos individuales en vistas o respuestas de API.

Desarrollador backend especializado en PHP y Laravel, con sede en Santander, Cantabria. Más de 15 años de experiencia en el desarrollo de aplicaciones web a medida y en la modernización de código heredado.
Fuente: Harris Raftopoulos
Artículos relacionados
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión