首页 > 解决方案 > 如何使用引用 Laravel Eloquent 中另一个表的“id”的“x_id”列获取表的列(例如 x)?

问题描述

我有一个表:stage_types,包含以下列:'id'、'name'、'created_at'

另一个表:阶段,具有以下内容:'id'、'x_id'、'name'、'created_at'

说我有这个:

阶段

'id' 'stage_type_id' 'name' 'created_at'

1 1(id​​) name1 2020/00/00

2 1(id​​) name2 2020/00/00

3 2(id) name3 2020/00/00

STAGE_TYPES

'id' 'name' 'created_at'

1 东西 2020/00/00

2 东西 2020/00/00

3 东西 2020/00/00

在 stage 表中,“stage_type_id”列是使用以下命令创建的:

        $table->unsignedBigInteger('stage_type_id');
        $table->foreign('stage_type_id')->references('id')->on('stage_types');

我怎样才能在控制器中使用 STAGES TABLE 开始,即 DB::table('stages')..... 并使用 'stage_type_id' 列引用阶段类型的名称?

模型关系:

(这可能是错误的做法)

标签: databaselaravelmodel-view-controllereloquentschema

解决方案


不太清楚您要达到的目标以及为什么要使用DB外观。

如果,如你所说:

一个阶段属于一个阶段类型

然后,您将使用定义关系的函数名称来引用阶段类型:

假设您在阶段模型中有:

public function types()
{
    return $this->belongsTo(StageType::class);
}

您可以参考 Stages 类型,例如:

$stage = App\Stage::first();
$nameOfStageType = $stage->types->name;

推荐阅读