问题描述
我对 Laravel 8 比较陌生,我无法确定当我需要建立关系时应该做什么 在 Laravel 8 的文档中没有很好的记录。
我的用户只能有一个工作。 我有一个表格工作,我列出了所有可用的工作 { id,name,timestamps }
是否应该在 User 表中创建一个 job_id 来存储 Job 的 id 要么 我应该对 job_user 表使用多对多吗
是否有更好的方法来创建多选关系。
解决方法
你们的关系很简单:
工作有很多用户
用户有一个工作
因此,您应该在 users 表中添加 job_id 并将其链接到 jobs 表。
public function up()
{
Schema::table('users',function (Blueprint $table) {
$table->unsignedBigInteger('job_id');
$table->foreign("job_id")->references('id')->on('jobs');
});
}
并确保在创建用户和作业表之后进行此迁移。
根据 Laravel doc,关系应该是这样设置的:
在用户模型中:
class User extends Authenticatable
{
public function job()
{
return $this->belongsTo('App\Models\Job',"user_id");
}
}
对于工作模型:
class Job extends Model
{
public function users()
{
return $this->hasMany('App\Models\User',"user_id");
}
}