Как можно проверить, есть ли у записи внешний ключ? - PullRequest
0 голосов
/ 08 апреля 2019

Есть ли способ выполнить проверку, чтобы увидеть, есть ли у записи таблицы внешний ключ, прежде чем я ее удалю или обновлю?.

У меня есть этот код с помощью удаления:

Но я получаю эту ошибку:

"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");

...