laravel

Laravel Sådan tilføjes kolonne til en eksisterende tabel

Laravel Sådan tilføjes kolonne til en eksisterende tabel

Problem

Tilføjelse af nye kolonner til dine Laravel-migreringer er en almindelig ting. Applikationer er beregnet til at være skalerbare, hvilket betyder, at tilføjelse af nye funktioner udvikler din applikation yderligere.

Meget ofte har nye Laravel-udviklere brug for at køre deres migrationer, men de sørger ikke for, at migrationer kan tilbageføre og migrere flere gange uden at bryde noget.

Selvom det ikke er vores fokus, synes jeg det var vigtigt at sige det, før vi går ind i vores problem.

Følgende er et almindeligt problem, som nye Laravel-udviklere vil forsøge at gøre, når de vil føje en ny kolonne til en eksisterende tabel.

Så på dette tidspunkt gjorde de allerede noget i retning af:

offentlig funktion op ()

Skema :: Opret ('organisationer', funktion ($ tabel)
$ tabel-> trin ('id');
$ table-> string ('name') -> nullable ();
$ table-> text ('about') -> nullable ();
);

Dette vil skabe en ny tabel for dem. Og for at gøre dette rent, skal du også tilføje nedfunktionen og bare slippe hele din tabel i dette tilfælde. Down-funktionen køres, når du vil tilbageføre din migrering.

Når man springer igennem alt dette, vises det virkelige problem, når de glemmer en kolonne, og de vil tilføje det bagefter, så de opretter en ny migreringsfil (klasse), prøv at køre noget som:

offentlig funktion op ()

Skema :: Opret ('organisationer', funktion ($ tabel)
$ table-> heltal ('størrelse') -> nullable ();
);

De håber at tilføje en ny kolonnestørrelse til den eksisterende tabel.

Lad os nu se, hvad der sker, og hvordan man forhindrer det i at ske igen.

Opløsning

Det største problem her er, hvad nye udviklere ofte har en tendens til at gå glip af at bemærke, hvilket er skemaets statiske metodenavn . Du bruger kun create, når du oprindeligt opretter din tabel. Hvis du til enhver tid har brug for at opdatere din tabel yderligere, vil du i stedet bruge bordet.

Så den virkelige op-funktion skal være sådan:

offentlig funktion op ()

Skema :: tabel ('organisationer', funktion ($ tabel)
$ table-> heltal ('størrelse') -> nullable ();
);

Og ned-funktionen ville være sådan:

offentlig funktion ned ()

Skema :: tabel ('organisationer', funktion ($ tabel)
$ tabel-> dropColumn ('størrelse');
);

Mit personlige forslag til dig er, at når du opretter din nye (ændrende) migreringsfil, skal du gøre følgende:

Et andet tip

Dette vil være praktisk på et senere tidspunkt, hvis du vil automatisere din implementering, og dit script skal køre en tilbageførsel.

Et andet tip, som jeg kan give dig, er at planlægge, hvor du vil placere din kolonne. Bare ved at gøre dette placerer Laravel din nye kolonne i slutningen, sandsynligvis efter opdateringen_at kolonnen. (De fleste tabeller har dette)

Du vil bruge en metode efter, så din endelige kode ser sådan ud:

offentlig funktion op ()

Skema :: tabel ('organisationer', funktion ($ tabel)
$ tabel-> heltal ('størrelse') -> efter ('navn') -> nulbar ();
);

I dette tilfælde placerer Laravel din nye kolonne lige efter navnet kolonnen, så den ser flot ud og er organiseret meget bedre.

OpenTTD Tutorial
OpenTTD er et af de mest populære forretningssimuleringsspil derude. I dette spil skal du oprette en vidunderlig transportvirksomhed. Du starter dog i...
SuperTuxKart til Linux
SuperTuxKart er en fantastisk titel designet til at give dig Mario Kart-oplevelsen gratis på dit Linux-system. Det er ret udfordrende og sjovt at spil...
Kæmp om Wesnoth-vejledning
Slaget om Wesnoth er et af de mest populære open source-strategispil, som du kan spille på dette tidspunkt. Ikke kun har dette spil været under udvikl...