Миграция Laravel onDelete () Исключение запроса - PullRequest
0 голосов
/ 18 мая 2019

У меня есть простая миграция laravel с внешним ключом.

public function up()
{
    Schema::create('smp_posts', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('project_id')->unsigned();
        // Some other stuff
        $table->foreign('project_id')->references('id')->on('smp_projects')->onDelete('cascade');
    });
}

Когда я запускаю команду migrate php artisan migrate:refresh.Я получаю эту ошибку:

Подсветка \ База данных \ QueryException:

SQLSTATE [2BP01]: Зависимые объекты все еще существуют: 7

ОШИБКА: невозможно удалить таблицу, поскольку smp_projectsдругие объекты зависят от него. DETAIL: ограничение smp_posts_project_id_foreign для таблицы smp_posts зависит от таблицы smp_projects

Обычно все дочерние элементы должны быть удалены, потому что я установил onDelete() в каскад.Правильно?Что не так?

1 Ответ

1 голос
/ 18 мая 2019

Заданная опция cascade применяется только при удалении строки. Если вы отбросите таблицу, это ограничение не сработает, поэтому вы получите ошибку.

Обратите внимание на раздел Отслеживание зависимостей в Postgres docs

...