Laravel добавление каскада при удалении к существующей таблице - PullRequest
0 голосов
/ 21 февраля 2020

В моем приложении laravel есть таблица исследований, а другая - документы. У них есть отношения «один ко многим», где каждое исследование может иметь одну или несколько статей. В файле миграции документов я создал ограничения внешнего ключа, используя:

        //foreign key for the research model
        $table->unsignedBigInteger('research_id');
        $table->index('researach_id');

Теперь я хочу создать новую миграцию для добавления каскада onDelete, чтобы документы удалялись при удалении их родительского исследования. Как это сделать? Я использую laravel 5.1

РЕДАКТИРОВАТЬ

ТАК ответ очень похож на принятый, за исключением того, что мне пришлось сначала удалить столбец, а затем добавить внешний ключ. так как я еще не в работе, поэтому удаление столбца не является проблемой, но если вы находитесь в производственной среде, вы можете в конечном итоге испортить согласованность данных в вашей базе данных. так что будьте осторожны

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Сначала удалите внешний ключ, затем добавьте его

$table->dropIndex('researach_id');
$table->foreign('research_id')
->references('id')->on('researches')
->onDelete('cascade');

Ссылка: Laravel -> База данных: Миграции -> Ограничения внешнего ключа

0 голосов
/ 21 февраля 2020

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

$table->foreign('research_id')
      ->references('id')->on('researches')
      ->onDelete('cascade');

Документацию можно найти здесь .

...