馃攣 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