🔁 Relaciones uno a muchos en Eloquent
En Eloquent, una relación uno a muchos se usa cuando un registro en una tabla puede tener varios registros asociados en otra tabla. Por ejemplo, un usuario puede tener varios posts o productos.
📘 1️⃣ Ejemplo práctico: Usuario y Publicaciones
⚙️ 2️⃣ Definir la relación en los modelos
En el modelo User definimos la relación con hasMany():
// app/Models/User.php namespace App\Models; use Illuminate\Database\Eloquent\Model; class User extends Model { public function posts() { return $this->hasMany(Post::class); } }
Y en el modelo Post, definimos la relación inversa con belongsTo():
// app/Models/Post.php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model { public function usuario() { return $this->belongsTo(User::class); } }
📘 Laravel detecta automáticamente la clave foránea user_id gracias a sus convenciones.
🔍 3️⃣ Consultar registros relacionados
Podemos obtener todos los posts de un usuario con una simple llamada:
$user = User::find(1);
foreach ($user->posts as $post) {
echo $post->titulo . "<br>";
}
Y acceder al usuario desde un post:
$post = Post::find(1);
echo $post->usuario->name;
✏️ 4️⃣ Crear registros relacionados
Podemos crear publicaciones directamente desde el modelo User gracias a la relación:
$user = User::find(1);
$user->posts()->create([
'titulo' => 'Mi primer post en Laravel',
'contenido' => 'Este es un ejemplo de cómo crear una relación uno a muchos.'
]);
💡 Laravel asignará automáticamente el user_id correcto al nuevo post.
🚀 5️⃣ Consultas con Eager Loading
Para mejorar el rendimiento, puedes usar with() para cargar los posts junto con los usuarios:
$usuarios = User::with('posts')->get();
foreach ($usuarios as $usuario) {
echo $usuario->name . "<br>";
foreach ($usuario->posts as $post) {
echo " - " . $post->titulo . "<br>";
}
}
✅ Esto evita consultas repetitivas y mejora el rendimiento del sistema.
✅ Conclusión
- 🔁 Una relación uno a muchos asocia un registro con varios registros dependientes.
- 📘 Usa
hasMany()ybelongsTo()para definir ambas direcciones. - ✏️ Puedes crear, leer y recorrer los registros de forma muy intuitiva.
- 🚀 Usa
with()para optimizar tus consultas.
En la próxima lección aprenderemos las relaciones muchos a muchos, ideales para casos en que un registro puede estar asociado con múltiples elementos y viceversa (por ejemplo, usuarios con roles).
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias