laravel

Laravel Hvordan legge til kolonne i en eksisterende tabell

Laravel Hvordan legge til kolonne i en eksisterende tabell

Problem

Å legge til nye kolonner i Laravel-migrasjonene dine er en vanlig ting. Applikasjoner er ment å være skalerbare, noe som betyr at å legge til nye funksjoner utvikler applikasjonen din videre.

Svært ofte må nye Laravel-utviklere kjøre migrasjonene sine, men de sørger ikke for at migrasjoner kan tilbakestilles og migrere flere ganger uten å bryte noe.

Selv om det ikke er vårt fokus, tror jeg det var viktig å si det før vi går inn i problemet vårt.

Følgende er et vanlig problem som nye Laravel-utviklere vil prøve å gjøre når de vil legge til en ny kolonne i en eksisterende tabell.

Så på dette tidspunktet gjorde de allerede noe sånt som:

offentlig funksjon opp ()

Schema :: create ('organisasjoner', funksjon ($ table)
$ tabell-> trinn ('id');
$ table-> string ('name') -> nullable ();
$ table-> text ('about') -> nullable ();
);

Dette vil skape en ny tabell for dem. Og for å gjøre dette rent, bør du også legge til nedfunksjonen og bare slippe hele bordet i dette tilfellet. Ned-funksjonen kjøres når du vil tilbakestille overføringen.

Å hoppe gjennom alt dette, viser det virkelige problemet når de glemmer en kolonne, og de vil legge til det etterpå, slik at de lager en ny migreringsfil (klasse), og prøv å kjøre noe som:

offentlig funksjon opp ()

Schema :: create ('organisasjoner', funksjon ($ table)
$ table-> heltall ('size') -> nullable ();
);

De håper å legge til en ny kolonnestørrelse i den eksisterende tabellen.

La oss nå se hva som skjer og hvordan du kan forhindre at det skjer igjen.

Løsning

Hovedproblemet her er hva nye utviklere ofte har en tendens til å savne å legge merke til hvilket er det statiske metodenavnet på skjemaet . Du bruker bare create når du oppretter bordet. Hvis du trenger å oppdatere bordet ditt når som helst, vil du bruke tabellen i stedet.

Så den virkelige opp-funksjonen skal være slik:

offentlig funksjon opp ()

Skjema :: tabell ('organisasjoner', funksjon ($ tabell)
$ table-> heltall ('size') -> nullable ();
);

Og ned-funksjonen vil være slik:

offentlig funksjon ned ()

Skjema :: tabell ('organisasjoner', funksjon ($ tabell)
$ table-> dropColumn ('størrelse');
);

Mitt personlige forslag til deg er at når du har opprettet din nye (endrende) migreringsfil, gjør du følgende:

Nok et tips

Dette vil være nyttig på et senere tidspunkt hvis du vil automatisere distribusjonen din og skriptet ditt må kjøre en tilbakeføring.

Et annet tips jeg kan gi deg er å planlegge hvor du vil plassere kolonnen din. Bare ved å gjøre dette, vil Laravel plassere den nye kolonnen din på slutten, sannsynligvis etter oppdatert_at-kolonnen. (De fleste bord har dette)

Du vil bruke en metode etterpå, slik at den endelige koden din ser slik ut:

offentlig funksjon opp ()

Skjema :: tabell ('organisasjoner', funksjon ($ tabell)
$ table-> heltall ('size') -> after ('name') -> nullable ();
);

I dette tilfellet vil Laravel plassere den nye kolonnen din rett etter navnet kolonnen, slik at den ser fin ut og er organisert mye bedre.

Mus Hvordan reversere rulle retning for mus og styreplater i Windows 10
Hvordan reversere rulle retning for mus og styreplater i Windows 10
Mus og Pekeplates gjør ikke bare databehandling enkelt, men mer effektivt og mindre tidkrevende. Vi kan ikke forestille oss et liv uten disse enhetene...
Mus Hvordan endre musepekeren og markørstørrelse, farge og skjema på Windows 10
Hvordan endre musepekeren og markørstørrelse, farge og skjema på Windows 10
Musepekeren og markøren i Windows 10 er veldig viktige aspekter ved operativsystemet. Dette kan sies også for andre operativsystemer, så i sannhet er ...
Gratis og åpen kildekode-spillmotorer for utvikling av Linux-spill
Denne artikkelen vil dekke en liste over gratis og open source-spillmotorer som kan brukes til å utvikle 2D- og 3D-spill på Linux. Det er mange slike ...