Добавить «ON DELETE CASCADE» в существующую колонку в Laravel

У меня есть столбец user_id fk в моей таблице

$table->foreign('user_id')->references('id')->on('users'); 

Я должен добавить функцию каскадного удаления в этот существующий столбец. Как я могу это сделать?

Сначала мы должны отказаться от внешнего ключа. Благодаря Razor для этого наконечника

 $table->dropForeign('answers_user_id_foreign'); $table->foreign('user_id') ->references('id')->on('users') ->onDelete('cascade'); 

Конструктор схем Laravel не может изменять столбцы в текущем состоянии, поэтому вы будете использовать необработанные запросы. Вам придется отказаться и воссоздать ограничение :

PostgreSQL

 function up() { DB::statement('alter table answers drop constraint answers_user_id_foreign, add constraint answers_user_id_foreign foreign key (user_id) references users(id) on delete cascade;' ); } function down() { DB::statement('alter table answers drop constraint answers_user_id_foreign, add constraint answers_user_id_foreign foreign key (user_id) references users(id);' ); } 

MySQL

 function up() { DB::statement('alter table answers drop FOREIGN KEY answers_user_id_foreign;'); DB::statement('alter table answers add constraint answers_user_id_foreign foreign key (user_id) references users(id) on delete cascade;' ); } function down() { DB::statement('alter table answers drop FOREIGN KEY answers_user_id_foreign;'); DB::statement('alter table answers add constraint answers_user_id_foreign foreign key (user_id) references users(id);' ); } 

Спасибо за ответ на вопрос. Помогите мне добраться до этого рабочего кода в L5.1:

 public function up() { Schema::table('transactions', function (Blueprint $table) { $table->dropForeign('transactions_order_id_foreign'); $table->foreign('order_id') ->references('id')->on('orders') ->onDelete('cascade') ->change(); }); Schema::table('orders', function (Blueprint $table) { $table->dropForeign('orders_user_id_foreign'); $table->foreign('user_id') ->references('id')->on('users') ->onDelete('cascade') ->change(); }); } 
 $table->foreign('user_id') ->references('id')->on('users') ->onDelete('cascade'); 
 $table->integer('user_id')->unsigned(); $table->foreign('user_id') ->references('id')->on('users') ->onDelete('cascade'); 

Я предполагаю, что вы использовали Illuminate\Database\Schema\Blueprint::primary() для создания users.id . Если это так, то users.id будет неподписанным. Поэтому ваш внешний столбец user_id также должен быть неподписанным.