Come aggiungere una nuova colonna alla tabella esistente in una migrazione

Come aggiungere una nuova colonna alla tabella esistente in una migrazione

Problema

Ho avuto incubi che non sono in grado di aggiungere una nuova colonna al mio utenti tavolo. Non riesco a capirlo.

Ho provato a modificare il file di migrazione usando ..

funzione pubblica up ()

Schema :: create ('utenti', funzione ($ table)
$ table-> integer ("pagato");
);

Nel terminale, eseguo PHP Artisan Migrate: Installa E migrare.

Come aggiungo nuove colonne?

Soluzione

Non è possibile aggiornare alcuna migrazione che sono già state migrate. Se viene già aggiunto alla tabella delle migrazioni, non lo elaborerà di nuovo. La tua soluzione è quella di creare una nuova migrazione, per la quale è possibile utilizzare il Migra: make comando sulla cli artigianale. Usa un nome specifico per evitare di scontrarsi con i modelli esistenti

Per Laravel 5+:

PHP Artisan Make: migrazione add_paid_to_users_table -table = utenti

Utilizzerai il metodo Schema :: Table () (poiché stai accedendo alla tabella esistente e non ne creerai una nuova). E puoi aggiungere una colonna come questa:

funzione pubblica up ()

Schema :: Table ('Users', Function ($ Table)
$ table-> integer ('pagato');
);

E non dimenticare di aggiungere l'opzione di rollback:

funzione pubblica down ()

Schema :: Table ('Users', Function ($ Table)
$ table-> dropcolumn ('pagato');
);

Quindi puoi eseguire le tue migrazioni:

PHP Artisan Migrate

E per Laravel 5:

  • Schema Builder
  • Migrazioni

Modificare:

utilizzo $ table-> integer ('pagato')-> dopo ('any_column'); Per aggiungere questo campo dopo una colonna specifica.