Сделайте столбец не обнуляемым в миграции Laravel

62

Я пишу переход для создания определенных столбцов в таблице nullable прямо сейчас. Для функции "вниз" я, конечно, хочу снова сделать эти столбцы not nullable. Я просмотрел конструктор компоновки схемы, но не смог увидеть способ сделать это.

Любая помощь будет оценена.

Теги:
database-migration

3 ответа

92
Лучший ответ

До Laravel 5 не было никакого родного способа Laravel изменить существующий столбец таблицы с помощью построителя схемы. Вам нужно будет использовать необработанные запросы.

Однако, с Laravel 5 вы можете использовать:

$table->...->nullable(false)->change();
  • 1
    Это то, что я тоже нашел. Приятно было бы, чтобы создатель схемы позволял изменять определения столбцов, которые он, похоже, не поддерживает. Я уверен, что есть много других, таких как я, которые используют конструктор схем для изменения существующей БД, а не просто для создания таблиц с нуля.
  • 2
    Смотрите: github.com/laravel/framework/issues/895
Показать ещё 9 комментариев
27

Как и в Laravel 5, можно отменить это изначально - просто передайте false как аргумент nullable().

например.

$table -> string('foo') -> nullable(false) -> change();
  • 0
    Это работает в Laravel 5.0
  • 0
    Оно работает! Так что это стало правильным ответом из-за обновлений Laravel.
Показать ещё 2 комментария
-2

приведенная ниже информация предназначена для SQL
Сначала используйте приведенный ниже код

UPDATE [Table] SET [Column]=0 WHERE [Column] IS NULL

чем запустить этот код

ALTER TABLE [Table] MODIFY [Column] INTEGER NOT NULL

Ещё вопросы

Сообщество Overcoder
Наверх
Меню