如何在Laravel中定义和使用外键作为主键?

时间:2020-08-07 08:56:58

标签: laravel foreign-keys primary-key shared-primary-key

我有一个Users表,该表可以存储8种不同类型的用户。根据用户类型,我还有其他一些带有特定数据集的表。因此,我想同时使用Users表中的ID作为这些表的外键和主键。但是我是Laravel的新手,我不知道该怎么做以适应惯例,或者,如果不可能,在定义模型和一对一关系时该怎么做。有人能帮我吗?谢谢!

编辑:对不起,我认为我的解释不够清楚。假设我有4个表格:用户,用户类型,客户组织,合作伙伴和客户。我想使用ID(即用户的PK)作为表customer_organization,合作伙伴和客户的外键和主键,这些表具有不同的信息,因为它们在我的应用程序中是不同类型的用户,但是它们都针对users表登录。我不在乎user_types表。我想我知道该如何处理。

1 个答案:

答案 0 :(得分:1)

就表结构而言,您没有给我们太多帮助,所以假设您在one-to-one表和users表之间具有简单的user_types关系,则将创建以下内容所需的关系。

在您的user_types表迁移中

$table->foreignId('user_id')->constrained();

上面的操作会将您的外键添加到表中,并将关系重新创建到users表中(这是使用约定“神奇地”完成的,因此命名很重要)。

然后在您的eloquent模型中,添加模型之间的关系:

User.php

public function type()
{
    return $this->hasOne(UserType::class);
}

UserType.php

public function user()
{
    return $this->belongsTo(User::class);
}