Laravel 反向插入主元 table 查询
Laravel reversed insert pivot table query
我正在制作一个应用程序,但是当我插入一些关系数据时,生成的查询是相反的,我现在不知道为什么。
$last_fab->medidas()->attach(
$last_medida->id_medida, ["medida" => $newPedidos[$i]["medidas_fab"][$j]["meters"]]
);
$last_fab 是 Fabricacion 的一个实例,Fabricacion 与 Medidas 有这种关系:
public function medidas() {
return $this->belongsToMany("App\Models\Medida", "fabricacion_medidas", "id_medida", "id_fabricacion")->withPivot("medida");
}
$last_medida 是 Medida 的一个实例,Medida 与 Fabricacion 有这样的关系:
public function fabricaciones() {
return $this->belongsToMany("App\Models\Fabricacion", "fabricacion_medidas", "id_fabricacion", "id_medida")->withPivot("medida");
}
有迁移代码:
//fabricacion
Schema::create("fabricacion", function (Blueprint $table) {
$table->engine = "InnoDB";
$table->increments("id_fabricacion");
$table->integer("id_order");
$table->integer("id_megacart")->nullable();
$table->string("reference");
$table->string("name");
$table->float("width");
$table->float("height");
$table->float("length");
$table->date("date_update");
$table->integer("id_categoria")->unsigned()->nullable();
$table->integer("id_ubicacion")->unsigned()->nullable();
$table->integer("id_incidencia")->unsigned()->nullable();
$table->integer("estado")->default(1);
$table->timestamps();
});
//medidas
Schema::create("medidas", function (Blueprint $table) {
$table->engine = "InnoDB";
$table->increments("id_medida");
$table->string("nom_medida")->nullable();
});
//fabricacion_medidas
Schema::create("fabricacion_medidas", function (Blueprint $table) {
$table->engine = "InnoDB";
$table->integer("id_fabricacion")->unsigned();
$table->integer("id_medida")->unsigned();
$table->integer("medida");
});
Schema::table("fabricacion_medidas", function(Blueprint $table) {
$table->foreign('id_fabricacion')->references('id_fabricacion')->on('fabricacion');
$table->foreign('id_medida')->references('id_medida')->on('medidas');
});
这是它向我显示的错误:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row:
a foreign key constraint fails (`asensiapp`.`fabricacion_medidas`, CONSTRAINT
`fabricacion_medidas_id_medida_foreign` FOREIGN KEY (`id_medida`)
REFERENCES `medidas` (`id_medida`)) (SQL: insert into `fabricacion_medidas`
(`id_fabricacion`, `id_medida`, `medida`) values (1, 10, 1.343))
有时是同样的错误,但它指的是 id_fabricaccion 而不是 id_medida。
其中在值中,10 是 id_fabricacion,1 是 id_medida。所以不知道为什么位置不对
您已经颠倒了模型中的关系:
return $this->belongsToMany('[ExternalClass]', '[table]', '[CurrentClassId]', '[ExternalClassId]');
所以你的Fabricacion
变成了
public function medidas() {
return $this->belongsToMany("App\Models\Medida", "fabricacion_medidas", "id_fabricacion", "id_medida")->withPivot("medida");
}
你的 Medidas
变成
public function fabricaciones() {
return $this->belongsToMany("App\Models\Fabricacion", "fabricacion_medidas", "id_medida", "id_fabricacion")->withPivot("medida");
}
我正在制作一个应用程序,但是当我插入一些关系数据时,生成的查询是相反的,我现在不知道为什么。
$last_fab->medidas()->attach(
$last_medida->id_medida, ["medida" => $newPedidos[$i]["medidas_fab"][$j]["meters"]]
);
$last_fab 是 Fabricacion 的一个实例,Fabricacion 与 Medidas 有这种关系:
public function medidas() {
return $this->belongsToMany("App\Models\Medida", "fabricacion_medidas", "id_medida", "id_fabricacion")->withPivot("medida");
}
$last_medida 是 Medida 的一个实例,Medida 与 Fabricacion 有这样的关系:
public function fabricaciones() {
return $this->belongsToMany("App\Models\Fabricacion", "fabricacion_medidas", "id_fabricacion", "id_medida")->withPivot("medida");
}
有迁移代码:
//fabricacion
Schema::create("fabricacion", function (Blueprint $table) {
$table->engine = "InnoDB";
$table->increments("id_fabricacion");
$table->integer("id_order");
$table->integer("id_megacart")->nullable();
$table->string("reference");
$table->string("name");
$table->float("width");
$table->float("height");
$table->float("length");
$table->date("date_update");
$table->integer("id_categoria")->unsigned()->nullable();
$table->integer("id_ubicacion")->unsigned()->nullable();
$table->integer("id_incidencia")->unsigned()->nullable();
$table->integer("estado")->default(1);
$table->timestamps();
});
//medidas
Schema::create("medidas", function (Blueprint $table) {
$table->engine = "InnoDB";
$table->increments("id_medida");
$table->string("nom_medida")->nullable();
});
//fabricacion_medidas
Schema::create("fabricacion_medidas", function (Blueprint $table) {
$table->engine = "InnoDB";
$table->integer("id_fabricacion")->unsigned();
$table->integer("id_medida")->unsigned();
$table->integer("medida");
});
Schema::table("fabricacion_medidas", function(Blueprint $table) {
$table->foreign('id_fabricacion')->references('id_fabricacion')->on('fabricacion');
$table->foreign('id_medida')->references('id_medida')->on('medidas');
});
这是它向我显示的错误:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row:
a foreign key constraint fails (`asensiapp`.`fabricacion_medidas`, CONSTRAINT
`fabricacion_medidas_id_medida_foreign` FOREIGN KEY (`id_medida`)
REFERENCES `medidas` (`id_medida`)) (SQL: insert into `fabricacion_medidas`
(`id_fabricacion`, `id_medida`, `medida`) values (1, 10, 1.343))
有时是同样的错误,但它指的是 id_fabricaccion 而不是 id_medida。 其中在值中,10 是 id_fabricacion,1 是 id_medida。所以不知道为什么位置不对
您已经颠倒了模型中的关系:
return $this->belongsToMany('[ExternalClass]', '[table]', '[CurrentClassId]', '[ExternalClassId]');
所以你的Fabricacion
变成了
public function medidas() {
return $this->belongsToMany("App\Models\Medida", "fabricacion_medidas", "id_fabricacion", "id_medida")->withPivot("medida");
}
你的 Medidas
变成
public function fabricaciones() {
return $this->belongsToMany("App\Models\Fabricacion", "fabricacion_medidas", "id_medida", "id_fabricacion")->withPivot("medida");
}