specific seeds delete column php laravel laravel-4 database-migration

php - seeds - nullable laravel



Agregue "ON DELETE CASCADE" a la columna existente en Laravel (7)

Tengo user_id fk column en mi tabla

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

Debería agregar la función de eliminación en cascada a esta columna existente. ¿Cómo puedo hacer esto?


Debemos soltar la clave externa al principio. Gracias a Razor por este consejo.

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


En mi caso, tendré que poner el nombre de columna en una matriz, de lo contrario habrá un error.

Schema::table(''transactions'', function (Blueprint $table) { $table->dropForeign([''transactions_order_id_foreign'']); $table->foreign(''order_id'') ->references(''id'')->on(''orders'') ->onDelete(''cascade'') ->change(); });

mysql 5.7 ver


Gracias por la respuesta a la pregunta. Ayúdame a llegar a este código de trabajo en 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(); }); }


La respuesta de Farid Movsumov funcionó para mí. Debes buscar "answers_user_id_foreign" en la estructura de MySQL. Abajo, en phpmyadmin, hay una tabla llamada índices donde encontrará su equivalente.


Laravel Schema Builder no puede modificar columnas en el estado actual, por lo que utilizará consultas en bruto. Tendrá que eliminar y volver a crear la restricción :

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);'' ); }


$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'');

Supongo que utilizó Illuminate/Database/Schema/Blueprint::primary() para crear users.id . Si ese es el caso, entonces users.id será sin firmar. Por lo tanto, su columna de clave externa user_id también debe estar sin firmar.