Hvordan legge til en ny kolonne til eksisterende tabell i en migrasjon

Hvordan legge til en ny kolonne til eksisterende tabell i en migrasjon

Problem

Jeg har hatt mareritt som ikke kunne legge til en ny kolonne til min Brukere bord. Ser ikke ut til å finne ut av det.

Jeg prøvde å redigere migrasjonsfilen ved hjelp av ..

offentlig funksjon opp ()

Skjema :: opprette ('brukere', funksjon ($ tabell)
$ tabell-> heltall ("betalt");
);

I terminalen utfører jeg PHP Artisan Migrate: Installer og migrere.

Hvordan legger jeg til nye kolonner?

Løsning

Du kan ikke oppdatere migrasjoner som allerede er migrert. Hvis det allerede legges til migrasjonstabellen, vil det ikke bearbeide det igjen. Løsningen din er å lage en ny migrasjon, som du kan bruke Migrere: Make Kommando på håndverkeren CLI. Bruk et spesifikt navn for å unngå å kollidere med eksisterende modeller

For Laravel 5+:

PHP Artisan Make: Migration add_paid_to_users_table --table = brukere

Du vil bruke skjemaet :: tabell () -metoden (siden du får tilgang til den eksisterende tabellen, og ikke oppretter en ny). Og du kan legge til en kolonne som denne:

offentlig funksjon opp ()

Skjema :: tabell ('brukere', funksjon ($ tabell)
$ tabell-> heltall ('betalt');
);

Og ikke glem å legge til alternativet Rollback:

offentlig funksjon ned ()

Skjema :: tabell ('brukere', funksjon ($ tabell)
$ tabell-> dropColumn ('betalt');
);

Da kan du kjøre migrasjonene dine:

PHP Artisan migrerer

Og for Laravel 5:

  • Skjemabygger
  • Migrasjoner

Redigere:

bruk $ tabell-> heltall ('betalt')-> etter ('any_column'); For å legge til dette feltet etter spesifikk kolonne.