mysql - 如何在 Laravel eloquent 中创建模型关系列表?
问题描述
如果我有一个名为 Master Index 的表,例如:Country Name = "USA",并且我希望有几个模型链接到它(GDP、人口、不平等等),我如何在一个模型中定义该模型列表字段,以便我可以知道该国家/地区具有哪些属性?
让我知道是否可能,谢谢!
解决方案
你可以在这里阅读
首先,您需要创建表,但在迁移中使您将创建的表基于层次结构示例:
如果你有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');
推荐阅读
- javascript - 如何重定向到带有密码的页面,但无法通过 URL 访问该页面?
- sql - 从另一个表中插入值并使用返回值更新原始表
- python - 如何将 pd.DataFrame.rolling.corr() 与 Kendall 的 Tau 或 Spearman 一起使用
- flutter - 我是否总是必须等待“https://google.bintray.com”在停机维护后才能完全运行,然后才能构建我的颤振应用程序?
- node.js - AWS Fargate 服务中的“导致执行用户进程:执行格式错误”
- git - 为本地浅拷贝切换 git 标签/分支
- sapui5 - 如何控制 MasterDetail 应用程序的边距
- django - 无法重定向到最近创建的详细视图
- angular - Angular 沿应用程序保存 http 响应
- system-verilog - 如何从 1 到 52 System Verilog 生成可合成的伪随机发生器