首页 > 解决方案 > 如何在 Laravel eloquent 中创建模型关系列表?

问题描述

如果我有一个名为 Master Index 的表,例如:Country Name = "USA",并且我希望有几个模型链接到它(GDP、人口、不平等等),我如何在一个模型中定义该模型列表字段,以便我可以知道该国家/地区具有哪些属性?

让我知道是否可能,谢谢!

标签: mysqllaraveleloquent

解决方案


你可以在这里阅读

首先,您需要创建表,但在迁移中使您将创建的表基于层次结构示例:

如果你有Master Index作为你的一般关系的根源,年轻需要在迁移中首先做到这一点。它在您的Database > Migrations文件夹中看起来像这样。

2020_07_14_0000001_create_master_indexs_table.php
2020_07_14_0000001_create_gdps_table.php
2020_07_14_0000001_create_populations_table.php
2020_07_14_0000001_create_inequalities_table.php

主索引模型

您将指定应该如下所示的关系:

public function gdps() {
  return $this->hasMany(Gdp::class); // if you have different foreign key you can specify it in the next argument return [$this->hasMany(Gdp::class, 'gdp_id');] like this
}

public function populations() {
  return $this->hasMany(Population::class);
}

public function inequalities() {
  return $this->hasMany(Inequality::class);
}

GDPS 模型/人口模型/不平等模型

您需要指定它所属的位置。应该是这样的。

public function master_index() {
  return $this->belongsTo(MasterIndex::class);
}

GDPS 迁移/人口迁移/不平等迁移

在您的迁移中,您应该指定外键。

如果你使用Laravel 7.x,你可以这样做。

$table->foreignId('master_index_id')->constrained()->cascadeOnDelete();

如果你不熟悉上面的代码,你也可以这样做:

$table->unsignedBigInteger('master_index_id');

$table->foreign('master_index_id')->references('id')->on('master_indexs')->onDelete('cascade');

推荐阅读