我是否使用了正确的方法为 Laravel 创建具有关系 ownTo 和 hasMany 的连接表

问题描述 投票:0回答:1

大家好,我是新来的,我有问题。 我为我的表构建迁移,但我不知道它是否正确。 我做模特工作。我的意思是工作机会,我的工作级别是模范的。 这就是它与模型之间的关系。

public function joblevel() {
  return $this->belongsTo(JobLevel::class);
}

public function jobs() {
  return $this->hasMany(Job::class);
}

我想进行迁移来连接它。我为

job
进行迁移,并为
joblevel
进行迁移。我可以制作另一个表,例如
job_joblevel
表制作外键吗?

return new class extends Migration {
  public function up(): void {
    Schema::create('joblevel_job', function (Blueprint $table) { 
      $table->unsignedBigInteger('joblevel_id');
      $table->unsignedBigInteger('job_id');

      $table->foreign('joblevel_id')
      ->references('id')->on('joblevels')
      ->onDelete('CASCADE');

      $table->foreign('job_id')
      ->references('id')->on('jobs')
      ->onDelete('CASCADE');
    });
  }

  public function down(): void{ 
    Schema::dropIfExists('joblevel_job');
  }
};

嗯,我在某个课程上看到了它,但他这样做是为了关系

belongsToMany
。我不知道这对于关系
belongsTo
hasMany
来说是个好选择。我不知道这对我的关系来说是正确的道路。我可以制作通过 2 个键连接到另一个桌子的桌子吗?

php laravel relation belongs-to
1个回答
0
投票

幸好我找到了答案。 我需要将外键放入模型作业中。

public function up(): void
    {
        Schema::table('jobs', function (Blueprint $table) {
            $table->unsignedBigInteger('joblevel_id');
    
            $table->foreign('joblevel_id')
                ->references('id')->on('joblevels')
                ->onDelete('CASCADE');
        });
    }
    
    public function down(): void
    {
        Schema::table('jobs', function (Blueprint $table) {
            $table->dropForeign(['joblevel_id']);
            $table->dropColumn('joblevel_id');
        });
    }
© www.soinside.com 2019 - 2024. All rights reserved.