laravel

Laravel Jak přidat sloupec do existující tabulky

Laravel Jak přidat sloupec do existující tabulky

Problém

Přidání nových sloupců k migraci laravel je běžná věc. Aplikace mají být škálovatelné, což znamená, že přidání nových funkcí vaši aplikaci dále rozvíjí.

Velmi často musí noví vývojáři Laravelu spouštět své migrace, ale nezajistí, aby se migrace mohly vrátit zpět a migrovat několikrát, aniž by došlo k porušení čehokoli.

I když to není naše zaměření, myslím, že bylo důležité říci, že než se pustíme do našeho problému.

Toto je běžný problém, který se noví vývojáři Laravelu pokusí udělat, když chtějí přidat nový sloupec do existující tabulky.

V tomto okamžiku už tedy udělali něco jako:

veřejná funkce nahoru ()

Schéma :: create ('organizace', funkce ($ tabulka)
$ table-> increments ('id');
$ table-> string ('name') -> nullable ();
$ table-> text ('about') -> nullable ();
);

Tím pro ně vytvoříte novou tabulku. A aby to bylo čisté, měli byste také přidat funkci dolů a v tomto případě jednoduše vypustit celou tabulku. Funkce dolů se spustí, když chcete vrátit migraci zpět.

Skok přes to všechno, skutečný problém se objeví, když zapomenou na jeden sloupec a chtějí to dodat, aby vytvořili nový migrační soubor (třídu), zkuste spustit něco jako:

veřejná funkce nahoru ()

Schéma :: create ('organizace', funkce ($ tabulka)
$ table-> integer ('size') -> nullable ();
);

Doufají, že do stávající tabulky přidají novou velikost sloupce.

Nyní se podívejme, co se stane a jak tomu zabránit.

Řešení

Hlavním problémem zde je to, co si noví vývojáři často nevšimnou, což je název statické metody schématu . Create použijete pouze při prvotním vytváření tabulky. Pokud potřebujete tabulku kdykoli dále aktualizovat, chcete místo ní použít tabulku.

Skutečná funkce up by tedy měla být taková:

veřejná funkce nahoru ()

Schéma :: tabulka ('organizace', funkce ($ tabulka)
$ table-> integer ('size') -> nullable ();
);

A funkce down by vypadala takto:

veřejná funkce dolů ()

Schéma :: tabulka ('organizace', funkce ($ tabulka)
$ table-> dropColumn ('size');
);

Můj osobní návrh je, že po vytvoření nového (měnícího se) souboru migrace proveďte následující:

Další tip

To se bude hodit v pozdější fázi, pokud chcete automatizovat nasazení a váš skript musí spustit vrácení zpět.

Další tip, který vám mohu dát, je naplánovat, kam chcete umístit sloupec. Tímto způsobem Laravel umístí váš nový sloupec na konec, pravděpodobně za sloupec updated_at. (Většina stolů to má)

Chcete použít metodu poté, aby váš konečný kód vypadal takto:

veřejná funkce nahoru ()

Schéma :: tabulka ('organizace', funkce ($ tabulka)
$ table-> integer ('size') -> after ('name') -> nullable ();
);

V takovém případě Laravel umístí váš nový sloupec hned za sloupec s názvem, takže bude vypadat hezky a bude uspořádán mnohem lépe.

Recenze bezdrátové myši Microsoft Sculpt Touch
Nedávno jsem četl o Microsoft Sculpt Touch bezdrátová myš a rozhodl se ji koupit. Po chvíli používání jsem se rozhodl se s ním podělit o své zkušenost...
Trackpad a ukazatel myši AppyMouse na obrazovce pro tablety Windows
Uživatelé tabletů často postrádají ukazatel myši, zejména když obvykle používají notebooky. Dotykové smartphony a tablety mají mnoho výhod a jediným o...
Střední tlačítko myši nefunguje ve Windows 10
The prostřední tlačítko myši pomáhá procházet dlouhé webové stránky a obrazovky se spoustou dat. Pokud se to zastaví, budete nakonec používat klávesni...