Laravel SQLSTATE [23000]: нарушение ограничения целостности: 1451 - PullRequest
0 голосов
/ 28 августа 2018

Есть некоторые проблемы с функцией удаления для одной таблицы. Мне нужна функция, которая будет обрабатывать исключения для ограничений внешнего ключа. Необходимо исправить эту функцию, чтобы я мог добавить softdelete. Я попытался скопировать один столбец из той же таблицы, и когда я удалил все хорошо, но есть 2 столбца, которые я не могу удалить. Я поставлю здесь функцию удаления. Если вам нужно больше кода из программного обеспечения, пожалуйста, сообщите мне, но я думаю, что это все, что вам нужно знать, в чем проблема.

Ошибка массажа : pastebin.com/CktBbbaX (по какой-то причине не может разместить в стеке)

Это функция php:

 public function destroy($id)
        {
            Rate::findOrFail($id)->delete();

            return redirect()->back()->with('status', __('messages/success.delete'));
        }

Таблица тарифов, как вы можете видеть, у меня уже есть функция CASCADE для удаления, но она все еще не работает.

public function up()
    {
        Schema::create('rates', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('supplier_id')->unsigned()->nullable();
            $table->integer('house_id')->unsigned()->nullable();
            $table->boolean('b4g_edit');
            $table->integer('derived_qty')->unsigned()->nullable();
            $table->integer('derived_price')->unsigned()->nullable();
            $table->tinyInteger('limit_quantity')->default(0);
            $table->decimal('round_prices', 10, 3);

            // TRANSLATABLE
            $table->integer('name_frontend')->unsigned();
            $table->integer('name_backend')->unsigned();
            $table->integer('description')->unsigned();
            // END TRANSLATABLE

            $table->timestamps();
            $table->integer('created_by')->unsigned()->nullable();
            $table->integer('updated_by')->unsigned()->nullable();

            $table->foreign('supplier_id')->references('id')->on('suppliers')->onDelete('SET NULL');
            $table->foreign('house_id')->references('id')->on('houses')->onDelete('SET NULL');
            //translation foreign keys
            $table->foreign('name_frontend')->references('group_id')->on('translations')->onDelete('CASCADE');
            $table->foreign('name_backend')->references('group_id')->on('translations')->onDelete('CASCADE');
            $table->foreign('description')->references('group_id')->on('translations')->onDelete('CASCADE');         
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('rates');
    }

А это норма-части:

public function up()
    {
        Schema::create('rate_parts', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('rate_id')->unsigned();
            $table->enum(
                'product_type',
                [ 'overnight','transport','activity','addon' ]
            );
            $table->integer('product_id')->unsigned();
            $table->date('date_from');
            $table->date('date_to');
            $table->enum(
                'type',
                [
                    'dummy',
                    'quantity',
                    'price',
                    'closed',
                    'cta',
                    'ctd',
                    'minstay',
                    'start',
                    'expire',
                    'min',
                    'max',
                    'max_beds',
                    'persons',
                    'daily_price',
                    'km_price',
                    'pricechange_abs',
                    'pricechange_rel'
                ]
            );
            $table->decimal('value', 10, 2);

            $table->timestamps();
            $table->integer('created_by')->unsigned()->nullable();
            $table->integer('updated_by')->unsigned()->nullable();

            $table->index(['product_id', 'product_type']);
            $table->foreign('rate_id')->references('id')->on('rates');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('rate_parts');
    }

И это последний перевод таблицы. (Опять проблемы с реализацией кода в стеке)

pastebin.com / h15Qe5mR

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...