我想要一对一的关系时应该在哪里放置外键

时间:2019-04-28 02:05:13

标签: laravel eloquent

我正在制作用户和地址表。那将是一对一的关系。 当我看到一些公司和用户一对一关系的示例时,公司有一个外键,而用户没有分配键。 怎么决定D?

公司表

  $table->integer('user_id')->unsigned()->nullable();
  $table->foreign('user_id')->references('id')->on('users');

1 个答案:

答案 0 :(得分:0)

我以laravel文档中的示例来说明您的问题:

例如,一个用户模型可能与一个电话相关联。为了定义这种关系,我们在 User 模型上放置了电话方法。 phone方法应调用 hasOne 方法并返回其结果:

Class User {
    /**
     * Get the phone record associated with the user.
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

然后我们可以获得属于用户的电话:

$phone = User::find(1)->phone;

Eloquent根据模型名称确定关系的外键。在这种情况下,会自动假定电话模型具有 user_id 外键。

因此,我们可以从我们的用户访问电话模型。现在,让我们在电话模型上定义一个关系,该关系将使我们能够访问拥有电话的用户。

class Phone 
{
    /**
     * Get the user that owns the phone.
     */
    public function user()
    {
        return $this->belongsTo('App\User');
    }
}

这里是表的表示形式:

___________                    __________
| User    |                    | Phone   |
|_________|                    |_________|
| id      |                    |   id    |
|_________|                    |_________|
| name    |                    | number  |
|_________|                    |_________|
| lastname|                    | user_id | ----------> foreign key 
|_________|                    |_________|