laravel

Laravel Cum se adaugă coloana la un tabel existent

Laravel Cum se adaugă coloana la un tabel existent

Problemă

Adăugarea de coloane noi la migrațiile Laravel este un lucru obișnuit. Aplicațiile sunt menite să fie scalabile, ceea ce înseamnă că adăugarea de noi funcții dezvoltă aplicația dvs. în continuare.

Foarte des, noii dezvoltatori Laravel trebuie să-și execute migrațiile, dar nu se asigură că migrațiile pot reveni și migra de mai multe ori fără a sparge nimic.

Deși nu acesta este obiectivul nostru, cred că a fost important să afirmăm acest lucru înainte de a ne îndrepta spre problema noastră.

Următoarea este o problemă comună pe care noii dezvoltatori Laravel vor încerca să o facă atunci când vor să adauge o nouă coloană la un tabel existent.

Deci, în acest moment au făcut deja ceva de genul:

funcție publică sus ()

Schema :: create („organizații”, funcție ($ tabel)
$ tabel-> incremente ('id');
$ tabel-> șir ('nume') -> nul ();
$ tabel-> text ('despre') -> nul ();
);

Acest lucru va crea un nou tabel pentru ei. Și pentru a face acest lucru curat, ar trebui să adăugați și funcția down și să aruncați întreaga masă în acest caz. Funcția down va fi executată atunci când doriți să reveniți la migrare.

Trecând prin toate acestea, adevărata problemă apare atunci când uită o coloană și vor să le adauge ulterior, astfel încât să creeze un nou fișier de migrare (clasă), să încerce să ruleze ceva de genul:

funcție publică sus ()

Schema :: create („organizații”, funcție ($ tabel)
$ tabel-> întreg ('mărime') -> nul ();
);

Ei speră să adauge o nouă dimensiune a coloanei la tabelul existent.

Acum, să vedem ce se întâmplă și cum să prevenim acest lucru să se repete.

Soluţie

Problema principală aici este că noii dezvoltatori au adesea dor să nu observe care este numele metodei statice a schemei . Folosiți Create numai atunci când creați inițial masa. Dacă trebuie să vă actualizați tabelul în orice moment, doriți să utilizați tabelul în loc.

Deci funcția real up ar trebui să fie astfel:

funcție publică sus ()

Schema :: tabel („organizații”, funcție ($ tabel)
$ tabel-> întreg ('mărime') -> nul ();
);

Și funcția de jos ar fi astfel:

funcție publică jos ()

Schema :: tabel („organizații”, funcție ($ tabel)
$ tabel-> dropColumn ('dimensiune');
);

Sugestia mea personală este că, după ce creați noul fișier de migrare (modificat), faceți următoarele:

Un alt sfat

Acest lucru va fi util la o etapă ulterioară dacă doriți să automatizați implementarea și scriptul dvs. trebuie să ruleze o revenire.

Un alt sfat pe care vi-l pot oferi este să planificați unde doriți să plasați coloana. Doar făcând acest lucru, Laravel va plasa noua dvs. coloană la sfârșit, probabil după coloana updated_at. (Cele mai multe tabele au acest lucru)

Vrei să folosești o metodă după aceea, astfel încât codul tău final să arate astfel:

funcție publică sus ()

Schema :: tabel („organizații”, funcție ($ tabel)
$ tabel-> întreg ('mărime') -> după ('nume') -> nul ();
);

În acest caz, Laravel va plasa noua dvs. coloană imediat după coloana cu nume, astfel încât să arate frumos și să fie organizată mult mai bine.

Battle For Wesnoth 1.13.6 Development Released
Battle For Wesnoth 1.13.6 released last month, is the sixth development release in the 1.13.x series and it delivers a number of improvements, most no...
Cum se instalează League Of Legends pe Ubuntu 14.04
Dacă ești fan al League of Legends, atunci aceasta este o oportunitate pentru tine de a testa rula League of Legends. Rețineți că LOL este acceptat pe...
Instalați cel mai recent joc de strategie OpenRA pe Ubuntu Linux
OpenRA este un motor de jocuri de strategie în timp real Libre / Free care recreează primele jocuri Westwood, cum ar fi clasicul Command & Conquer: Re...