laravel

Laravel Kuidas olemasolevasse tabelisse veerg lisada

Laravel Kuidas olemasolevasse tabelisse veerg lisada

Probleem

Uute veergude lisamine Laraveli migratsioonidele on tavaline asi. Rakendused on mõeldud laiendatavaks, mis tähendab, et uute funktsioonide lisamine arendab teie rakendust veelgi.

Väga sageli peavad uued Laraveli arendajad oma migreerimisi käivitama, kuid nad ei taga, et migratsioonid saaksid mitu korda tagasi liikuda ja midagi rikkuda.

Kuigi see pole meie tähelepanu keskpunkt, arvan, et enne probleemi lahendamist oli oluline seda öelda.

Järgnev on levinud probleem, mida uued Laraveli arendajad proovivad teha, kui nad soovivad olemasolevasse tabelisse uue veeru lisada.

Nii et nad tegid juba midagi sellist:

avalik funktsioon üles ()

Skeem :: create ('organisatsioonid', function ($ tabel)
$ tabel-> juurdekasv ('id');
$ table-> string ('nimi') -> nullable ();
$ table-> text ('about') -> nullable ();
);

See loob neile uue tabeli. Ja selle puhastamiseks peaksite lisama ka allapoole funktsiooni ja sel juhul lihtsalt kogu oma laua maha viskama. Alla liikumise funktsioon käivitatakse, kui soovite oma migreerimist tagasi tuua.

Kõigest sellest üle hüpates ilmneb tõeline probleem, kui nad unustavad ühe veeru ja tahavad selle pärast lisada, et nad loovad uue rändefaili (klassi), proovides käivitada midagi sellist:

avalik funktsioon üles ()

Skeem :: create ('organisatsioonid', function ($ tabel)
$ table-> integer ('size') -> nullable ();
);

Nad loodavad olemasolevasse tabelisse lisada uue veeru suuruse.

Vaatame nüüd, mis juhtub ja kuidas selle kordumist vältida.

Lahendus

Siin on peamine probleem see, mida uued arendajad kipuvad sageli märkamata jätma, mis on skeemi staatiline meetodi nimi . Looge saate kasutada ainult siis, kui loote oma tabelit algselt. Kui peate oma tabelit igal ajal täiendavalt värskendama, soovite selle asemel kasutada tabelit.

Nii et tegelik ülesfunktsioon peaks olema selline:

avalik funktsioon üles ()

Skeem :: tabel ('organisatsioonid', funktsioon ($ tabel)
$ table-> integer ('size') -> nullable ();
);

Ja alla funktsioon oleks selline:

avalik funktsioon alla ()

Skeem :: tabel ('organisatsioonid', funktsioon ($ tabel)
$ table-> dropColumn ('suurus');
);

Minu isiklik ettepanek teile on, et pärast uue (muutva) rändefaili loomist tehke järgmist:

Veel üks näpunäide

See on hilisemas etapis mugav, kui soovite juurutamist automatiseerida ja skript peab tagastama.

Teine näpunäide, mille saan teile anda, on planeerida koht, kuhu soovite oma veeru paigutada. Lihtsalt seda tehes asetab Laravel teie uue veeru lõppu, tõenäoliselt pärast veergu uuendatud_at. (Enamikul tabelitel on see)

Soovite pärast meetodit kasutada, nii et teie lõplik kood näeks välja selline:

avalik funktsioon üles ()

Skeem :: tabel ('organisatsioonid', funktsioon ($ tabel)
$ table-> integer ('size') -> after ('name') -> nullable ();
);

Sellisel juhul paigutab Laravel teie uue veeru kohe nimeveeru järele, nii et see näeb kena välja ja on palju paremini korraldatud.

X-Mouse Button Control abil saate hiire nupud erinevates tarkvarades erinevalt ümber teha
Võib-olla vajate tööriista, mis võiks muuta teie hiire juhtimissüsteemi iga kasutatava rakendusega. Sel juhul võite proovida rakendust nimega X hiiren...
Microsoft Sculpt Touch juhtmeta hiirte ülevaade
Lugesin hiljuti Microsoft Sculpt Touch juhtmevaba hiir ja otsustas selle osta. Pärast mõnda aega kasutamist otsustasin jagada sellega oma kogemusi. Se...
Rakenduse AppyMouse ekraanipaneel ja hiirekursor Windowsi tahvelarvutitele
Tahvelarvutite kasutajad tunnevad hiirekursorit sageli puudust, eriti kui neil on kombeks sülearvuteid kasutada. Puutetundliku ekraaniga nutitelefonid...