Relación Uno a Uno
Comprar curso

83. Relación Uno a Uno

En este capítulo, aprenderás cómo establecer una relación Uno a Uno en Laravel 10 entre dos modelos de la base de datos. Descubre cómo definir la relación y cómo acceder a los datos relacionados.


3 comentarios

Inicia sesión para comentar

Comentarios:

  • Victor Arana Flores

    Victor Arana Flores hace 2 días Destacado

    Cuando trabajas con Laravel 10, es común necesitar establecer relaciones entre los modelos de la base de datos. Una de estas relaciones es la relación Uno a Uno, donde un registro de un modelo está relacionado con un solo registro de otro modelo. En este capítulo, aprenderás cómo establecer una relación Uno a Uno en Laravel 10 y cómo acceder a los datos relacionados.

    Para establecer una relación Uno a Uno en Laravel 10, debes definir dos modelos y una clave foránea en uno de ellos que haga referencia al otro modelo. Por ejemplo, supongamos que tienes dos modelos "Usuario" y "Perfil", donde cada usuario tiene un único perfil. En el modelo "Usuario", debes agregar la siguiente función para definir la relación:

    namespace App\Models;
    use Illuminate\Database\Eloquent\Model;
    class Usuario extends Model
    {
       public function perfil()
       {
           return $this->hasOne(Perfil::class);
       }
    }

    En este ejemplo, la función "perfil()" utiliza el método "hasOne()" para definir la relación Uno a Uno entre el modelo "Usuario" y el modelo "Perfil". Laravel asume que la clave foránea para esta relación es "usuario_id" en la tabla "perfiles".

    A continuación, en el modelo "Perfil", debes agregar una función que haga referencia a la relación inversa. Esta función es necesaria para acceder a los datos del usuario relacionado desde el perfil. Por ejemplo:

    namespace App\Models;
    use Illuminate\Database\Eloquent\Model;
    class Perfil extends Model
    {
       public function usuario()
       {
           return $this->belongsTo(Usuario::class);
       }
    }

    En este ejemplo, la función "usuario()" utiliza el método "belongsTo()" para definir la relación inversa Uno a Uno entre el modelo "Perfil" y el modelo "Usuario". Laravel asume que la clave foránea para esta relación es "usuario_id" en la tabla "perfiles".

    Ahora que has definido la relación Uno a Uno en tus modelos, puedes acceder a los datos relacionados utilizando la función correspondiente. Por ejemplo, para obtener el perfil de un usuario en particular, puedes hacer lo siguiente:

    $usuario = Usuario::find(1);
    $perfil = $usuario->perfil;

    En este ejemplo, la variable "$usuario" contiene un objeto de modelo "Usuario" con el ID 1. La variable "$perfil" contiene el perfil asociado al usuario.

    En resumen, establecer una relación Uno a Uno en Laravel 10 es fácil. Solo necesitas definir las funciones "hasOne()" y "belongsTo()" en los modelos correspondientes y una clave foránea en uno de ellos que haga referencia al otro modelo. Una vez que has establecido la relación, puedes acceder a los datos relacionados utilizando las funciones correspondientes.

  • Fernando Garcia

    Fernando Garcia hace 1 semana

    Buenas tardes 
    A mi me manda el tinker

     $profile = Profile::first();
     

      Error  Class "Profile" not found.

  • Cristian Dominguez

    Cristian Dominguez hace 2 meses

    Buenas profe, como voy a saber cuál tabla va ser la que manda? Por ejemplo la que manda es la de users, y se incluye su id en profiles, pero también podría ser que en la tabla de users se agregue el campo profile_id? Cual es más correcto y por que?