Laravel8 有许多中的一个

问题描述

我对 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");
    }
}