如何在Laravel中定义和使用外键作为主键?
How to define and use a foreign key as primary key in Laravel?
我有一个 Users table 可以存储 8 种不同类型的用户。根据用户类型,我还有一些其他 table 具有针对它的特定数据集。所以,我想同时使用来自用户 table 的 ID 作为那些 table 的外键和主键。但我是 Laravel 的新手,我不知道如何做到这一点以符合惯例,或者,如果不可能,在定义我的模型和一对一关系时如何做到这一点。有人能帮我吗?谢谢!
编辑:抱歉,我觉得我的解释不够清楚。假设我有 4 个 table:用户、user_types、customer_organzations、合作伙伴和客户。我想使用 ID,即用户的 PK,作为 tables customer_organizations、合作伙伴和客户的外键和主键,它们具有不同的信息,因为它们是我的不同类型的用户应用程序,但他们都针对用户 table 登录。我不在乎 user_types table。我想我知道怎么处理了。
您在 table 结构方面没有给我们太多信息,因此假设您在 users
table 和 one-to-one
之间有一个简单的 one-to-one
关系=15=] table,以下将创建所需的关系。
在您的 user_types
table 迁移中
$table->foreignId('user_id')->constrained();
上面的代码会将你的外键添加到 table 并创建返回到 users
table 的关系(这是 'magically' 使用约定完成的,因此命名是重要)。
然后在您的 eloquent
模型中,添加模型之间的关系:
User.php
public function type()
{
return $this->hasOne(UserType::class);
}
UserType.php
public function user()
{
return $this->belongsTo(User::class);
}
我有一个 Users table 可以存储 8 种不同类型的用户。根据用户类型,我还有一些其他 table 具有针对它的特定数据集。所以,我想同时使用来自用户 table 的 ID 作为那些 table 的外键和主键。但我是 Laravel 的新手,我不知道如何做到这一点以符合惯例,或者,如果不可能,在定义我的模型和一对一关系时如何做到这一点。有人能帮我吗?谢谢!
编辑:抱歉,我觉得我的解释不够清楚。假设我有 4 个 table:用户、user_types、customer_organzations、合作伙伴和客户。我想使用 ID,即用户的 PK,作为 tables customer_organizations、合作伙伴和客户的外键和主键,它们具有不同的信息,因为它们是我的不同类型的用户应用程序,但他们都针对用户 table 登录。我不在乎 user_types table。我想我知道怎么处理了。
您在 table 结构方面没有给我们太多信息,因此假设您在 users
table 和 one-to-one
之间有一个简单的 one-to-one
关系=15=] table,以下将创建所需的关系。
在您的 user_types
table 迁移中
$table->foreignId('user_id')->constrained();
上面的代码会将你的外键添加到 table 并创建返回到 users
table 的关系(这是 'magically' 使用约定完成的,因此命名是重要)。
然后在您的 eloquent
模型中,添加模型之间的关系:
User.php
public function type()
{
return $this->hasOne(UserType::class);
}
UserType.php
public function user()
{
return $this->belongsTo(User::class);
}