laravel

Laravel Ako pridať stĺpec do existujúcej tabuľky

Laravel Ako pridať stĺpec do existujúcej tabuľky

Problém

Pridávanie nových stĺpcov do vašich migrácií laravel je bežná vec. Aplikácie majú byť škálovateľné, čo znamená, že pridaním nových funkcií sa vaša aplikácia ďalej rozvinie.

Noví vývojári Laravelu musia veľmi často migrovať, ale nezabezpečujú, aby sa migrácie mohli vrátiť späť a migrovať viackrát bez toho, aby niečo porušili.

Aj keď to nie je naším zameraním, myslím si, že bolo dôležité povedať to skôr, ako sa pustíme do nášho problému.

Toto je bežný problém, ktorý sa noví vývojári Laravelu pokúsia urobiť, keď chcú pridať nový stĺpec do existujúcej tabuľky.

Takže v tomto okamihu už urobili niečo ako:

verejná funkcia hore ()

Schéma :: create ('organizácie', funkcia ($ tabuľka)
$ table-> prírastky ('id');
$ table-> string ('name') -> nullable ();
$ table-> text ('about') -> nullable ();
);

Takto im vytvoríte novú tabuľku. A aby to bolo čisté, mali by ste tiež pridať funkciu down a v takom prípade len zhodiť celú tabuľku. Funkcia nadol sa spustí, keď chcete vrátiť migráciu späť.

Keď to všetko preskočíme, skutočný problém sa objaví, keď zabudnú na jeden stĺpec a chcú to doplniť, aby potom vytvorili nový migračný súbor (triedu), skúste spustiť niečo ako:

verejná funkcia hore ()

Schéma :: create ('organizácie', funkcia ($ tabuľka)
$ table-> integer ('size') -> nullable ();
);

Dúfajú, že do existujúcej tabuľky pridajú novú veľkosť stĺpca.

Teraz sa pozrime, čo sa stane a ako zabrániť tomu, aby sa to už nezopakovalo.

Riešenie

Hlavným problémom je, čo si noví vývojári zvyknú nevšimnúť, čo je názov schémy statickej metódy . Vytvorenie použijete iba pri pôvodnom vytváraní tabuľky. Ak potrebujete svoju tabuľku kedykoľvek aktualizovať, budete radšej chcieť použiť tabuľku.

Skutočná funkcia hore by teda mala byť taká:

verejná funkcia hore ()

Schéma :: tabuľka ('organizácie', funkcia ($ tabuľka)
$ table-> integer ('size') -> nullable ();
);

A funkcia down by bola nasledovná:

verejná funkcia dole ()

Schéma :: tabuľka ('organizácie', funkcia ($ tabuľka)
$ table-> dropColumn ('size');
);

Môj osobný návrh je, že po vytvorení nového (pozmeňujúceho) migračného súboru postupujte takto:

Ďalší tip

To sa vám bude hodiť v neskoršej fáze, ak chcete automatizovať svoje nasadenie a je potrebné, aby bol váš skript spustený vrátením zmien.

Ďalším tipom, ktorý vám môžem dať, je naplánovanie umiestnenia stĺpca. Týmto spôsobom Laravel umiestni váš nový stĺpec na koniec, pravdepodobne za stĺpec updated_at. (Väčšina tabuliek to má)

Chcete použiť metódu potom, aby váš konečný kód vyzeral takto:

verejná funkcia hore ()

Schéma :: tabuľka ('organizácie', funkcia ($ tabuľka)
$ table-> integer ('size') -> after ('name') -> nullable ();
);

V takom prípade Laravel umiestni váš nový stĺpec hneď za stĺpec s menom, aby vyzeral pekne a bol lepšie usporiadaný.

Hry Ako používať GameConqueror Cheat Engine v Linuxe
Ako používať GameConqueror Cheat Engine v Linuxe
Tento článok obsahuje sprievodcu používaním cheatovacieho modulu GameConqueror v systéme Linux. Mnoho používateľov, ktorí hrajú hry v systéme Windows,...
Hry Najlepšie emulátory herných konzol pre systém Linux
Najlepšie emulátory herných konzol pre systém Linux
V tomto článku je uvedený zoznam populárneho softvéru na emuláciu herných konzol, ktorý je k dispozícii pre systém Linux. Emulácia je vrstva kompatibi...
Hry Najlepšie linuxové distribúcie pre hry v roku 2021
Najlepšie linuxové distribúcie pre hry v roku 2021
Operačný systém Linux prešiel dlhou cestou od svojho originálneho, jednoduchého serverového vzhľadu. Tento OS sa za posledné roky nesmierne vylepšil a...