【发布时间】:2018-04-03 21:59:39
【问题描述】:
我有一个四张表,分别是机构、表格、form_institution(pivot table) 和 form_institution_attributes。这是迁移:
机构表:
public function up() {
Schema::create('institutions', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 255);
$table->softDeletes();
$table->timestamps();
});
}
机构模式:
public function forms() {
return $this->belongsToMany(Form::class, 'form_institution');
}
表格:
public function up() {
Schema::create('forms', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 255);
$table->softDeletes();
$table->timestamps();
});
}
表格模型:
public function institutions() {
return $this->belongsToMany(Institution::class, 'form_institution');
}
形成机构数据透视表:
Schema::create('form_institution', function (Blueprint $table) {
$table->increments('id');
$table->integer('institution_id')->unsigned();
$table->integer('form_id')->unsigned();
$table->foreign('institution_id')->references('id')->on('institutions');
$table->foreign('form_id')->references('id')->on('forms');
});
到这里为止一切都很好。但是我需要再添加一个表,它是属性表,它是数据透视表(一对多)之间的关系
这是表格:
Schema::create('form_institution_attributes', function (Blueprint $table) {
$table->increments('id');
$table->integer('form_institution_id')->unsigned();
$table->integer('field_name_id')->unsigned();
$table->integer('input_type_id')->unsigned();
$table->string('field_caption');
$table->softDeletes();
$table->timestamps();
$table->foreign('form_institution_id')->references('id')->on('form_institution');
});
现在,当我调用机构表和机构->表单参数时,我想使用数据透视表获取 form_institution_attribute(子表)。但我不能这样做?
如何在数据透视表下添加表格作为一对多关系?
【问题讨论】:
-
首先,您的上一个迁移文件中有一些错误。您应该引用“form_institution”表,因为“institution_form”表不存在。此外,'institution_form_id' 的命名应该是 form_institution_id'。如果你纠正了这些,人们会更容易帮助你。
-
@OrestisPalampougioukis 我错过了,我编辑为 form_institution。
-
当您不需要额外的表格时,直接在数据透视表中添加属性。执行以下操作:
$this->belongsToMany(Form::class, 'form_institution')->withPivot('field_name_id', 'input_type_id', 'field_caption');并最终在迁移文件中定义列。 http://laraveldaily.com/pivot-tables-and-many-to-many-relationships/ -
@StevenSteinrücken 哪个迁移文件?我是否将 field_name_id、input_type_id 和 field_caption 列添加到 form_institution 迁移?
-
@GoMommy 你是对的