Удалять обладает Laravel

Я хочу удалить зарегистрированный но этот счет у него есть уже зарегистрированные сделки, которые присоединены с этим счетомVista de las cuentas, и в ней encutran сделки, уже добавленныеVista de transacciones, сделав названный удаления, я имею в драйвере Счетов:

public function destroy($id)
    {
      Cuenta::find($id)->delete();
      return redirect()->route('cuentas.index');
    }

и миграции, что у меня есть звук: Таблица ты считаешь:

public function up()
    {
        Schema::create('cuentas', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('Nombre');
            $table->string('Descripcion');
            $table->integer('Interes');
            $table->timestamps();
        });
    }

таблица сделки:

public function up()
    {
        Schema::create('transaccions', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('Cantidad');
            $table->string('descripcion');
            $table->bigInteger('cuenta_id')->unsigned();
            $table->foreign('cuenta_id')
                  ->references('id')
                  ->on('cuentas')
                  ->onDelete('cascade');
            $table->timestamps();
        });
    }

и я хочу удалить счет с включенными сделками, но дав удалять ему, он дает мне ошибку

SQLSTATE [23000]: Integrity constraint violation: 1451 Cannot delete or update в parent row: в foreign key constraint fails (creditex.transaccions, CONSTRAINT transaccions_cuenta_id_foreign FOREIGN KEY (cuenta_id) REFERENCES cuentas (id)) (SQL: delete from cuentas where id = 1)

1
задан 05.11.2019, 00:09
1 ответ

Ты не будешь мочь удалять, так как эта включила чужеземный ключ, если из всех форм ты хочешь сделать это, будешь должен дезактивировать в тебе BD.

SET FOREIGN_KEY_CHECKS = 0;

Так ты dejarГЎ удалять их, другая форма - используя CASCADE, это удаляет все реестры, которые зависят от той, которая ты будешь удалять

$table->foreign('user_id')
  ->references('id')->on('users')
  ->onDelete('cascade');
0
ответ дан 01.12.2019, 12:46
  • 1
    В самом деле, если ты проверяешь второе, что ты предлагаешь уже, это у него есть в Вашем migració n –  Aprendiz 05.11.2019, 00:52