我有一个Users表,该表可以存储8种不同类型的用户。根据用户类型,我还有其他一些带有特定数据集的表。因此,我想同时使用Users表中的ID作为这些表的外键和主键。但是我是Laravel的新手,我不知道该怎么做以适应惯例,或者,如果不可能,在定义模型和一对一关系时该怎么做。有人能帮我吗?谢谢!
编辑:对不起,我认为我的解释不够清楚。假设我有4个表格:用户,用户类型,客户组织,合作伙伴和客户。我想使用ID(即用户的PK)作为表customer_organization,合作伙伴和客户的外键和主键,这些表具有不同的信息,因为它们在我的应用程序中是不同类型的用户,但是它们都针对users表登录。我不在乎user_types表。我想我知道该如何处理。
答案 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);
}