1
У меня есть эта миграция.Cant make field not nulleable on migration rollback
public function up()
{
Schema::table('products', function (Blueprint $table) {
$table->integer('category_id')->nullable()->unsigned()->change();
});
}
public function down()
{
Schema::table('products', function (Blueprint $table) {
$table->integer('category_id')->nullable(false)->change();
});
}
Это делает category_id поле обнуляемые по методу вверх и работать нормально, но когда я пытаюсь откатить возвращает эту ошибку:
[PDOException]
SQLSTATE[HY000]: General error: 1832 Cannot change column 'category_id': used in a foreign key constraint 'products_category_id_foreign'
Что я должен делать на откате? Цель этой миграции - сделать поле нулевым при запуске и вернуть его обратно при откате.
Проблема в том, что когда вы откатываете ее назад, каждая строка, содержащая null category_id, внезапно становится недействительной. Поэтому вам нужно сначала удалить эти строки, чтобы запустить его. (И это может не сработать даже тогда, потому что это ограничение внешнего ключа - но это стоит попробовать.) –