Como adicionar uma nova coluna à tabela existente em uma migração

Como adicionar uma nova coluna à tabela existente em uma migração

Problema

Eu tenho tido pesadelos não sendo capazes de adicionar uma nova coluna ao meu Usuários mesa. Não consigo descobrir isso.

Tentei editar o arquivo de migração usando…

função pública up ()

Schema :: Create ('Usuários', função ($ tabela)
$ tabela-> Inteiro ("pago");
);

No terminal, eu executo PHP Artisan Migre: Instale e migrar.

Como faço para adicionar novas colunas?

Solução

Você não pode atualizar nenhuma migração que já tenha sido migrada. Se já for adicionado à tabela de migrações, não o processará novamente. Sua solução é criar uma nova migração, para a qual você pode usar o migrar: faça Comando no CLI artesão. Use um nome específico para evitar conflitos com os modelos existentes

Para Laravel 5+:

PHP Artisan Make: Migration add_paid_to_users_table ---table = usuários

Você usará o método Schema :: Table () (já que está acessando a tabela existente e não criando um novo). E você pode adicionar uma coluna como esta:

função pública up ()

Schema :: Tabela ('Usuários', função ($ tabela)
$ tabela-> Inteiro ('pago');
);

E não se esqueça de adicionar a opção Rollback:

função pública para baixo ()

Schema :: Tabela ('Usuários', função ($ tabela)
$ tabela-> dropColumn ('pago');
);

Então você pode executar suas migrações:

PHP Artisan migra

E para Laravel 5:

  • Construtor de esquema
  • Migrações

Editar:

usar $ tabela-> inteiro ('pago')-> depois ('any_column'); Para adicionar este campo após coluna específica.