Есть ли способ выполнить проверку, чтобы увидеть, есть ли у записи таблицы внешний ключ, прежде чем я ее удалю или обновлю?.
У меня есть этот код с помощью удаления:
Но я получаю эту ошибку:
"SQLSTATE [23000]: нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: сбой ограничения внешнего ключа (prueba
. permiso
, CONSTRAINT permiso_id_ap_foreign
FOREIGN KEY (id_ap
) ССЫЛКИ at
(id
)) (SQL: удалить из at
, где id
= 5) "
Контроллер:
public function deleteSede(Request $id) {
$sedes=at::find($id->id)->delete();
/* if $sedes thrown a foreign key error do this...else do this other
thing
*/
return redirect("/");
}
Используемые таблицы:
Schema::create('sede', function (Blueprint $table) {
$table->integer('id')->autoIncrement();
$table->string("nit",9);
$table->string("rs",40)
; //razon Social
});
Schema::create('permiso', function (Blueprint $table) {
$table->unsignedInteger('id')->autoIncrement();
$table->integer("id_vinp")->unsigned();
$table->integer("id_ap")->default(0)->unsigned();
$table->tinyInteger("orden")->default(0);
$table->tinyInteger("aFinal")->default(0);
$table->tinyInteger("pFinal")->default("0");
$table->foreign("id_vinp")->references("id")->on("v_p");
$table->foreign("id_ap")->references("id")->on("at");
});
Schema::create('v_fpat', function (Blueprint $table) {
$table->unsignedInteger('id')->autoIncrement();
$table->integer("id_vp")->unsigned();
$table->integer("id_at")->unsigned();
$table->integer("id_fp")->unsigned();
$table->foreign("id_vp")->references("id")->on("v_p");
$table->foreign("id_at")->references("id")->on("at");
$table->foreign("id_fp")->references("id")->on("forpago");
});
HTML:
<form action="{{route("sede.destroy",["id"=>$sede->id])}}" method="POST">
@method("DELETE")
<input type="submit" value="Delete Sede">
@csrf
</form>
Маршрут:
Route::delete("deleteSede","ControllerTodo@deleteSede")->name("sede.destroy");