我有一个Users表,可以存储8种不同类型的用户。根据用户类型的不同,我还有一些其他表,其中包含特定的数据集。因此,我希望将Users表中的ID同时用作这些表的外键和主键。但我是Laravel的新手,我不知道如何做到这一点以符合惯例,如果不可能的话,在定义我的模型和一对一关系时,我也不知道如何做。有人能帮我吗?谢谢
编辑:对不起,我觉得我的解释不够清楚。假设我有4个表:用户、用户类型、客户组织、合作伙伴和客户。我想使用ID,即用户的PK,作为表customer_organization、合作伙伴和客户的外键和主键,这些表具有不同的信息,因为它们在我的应用程序中是不同类型的用户,但都是根据用户表登录的。我不在乎user_types表。我想我知道如何处理它。
您没有向我们提供太多关于表结构的信息,因此假设您在users
表和user_types
表之间有一个简单的one-to-one
关系,下面将创建所需的关系。
在您的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);
}