Comenzile `migrează: actualizare și` migrare: resetare 'în Laravel sunt ambele legate de gestionarea migrațiilor bazei de date, dar servesc scopuri diferite și se comportă în moduri distincte în timpul gestionării schemelor de baze de date. Înțelegerea diferențelor lor este crucială pentru dezvoltatorii Laravel să se ocupe în mod eficient de stările bazei de date în timpul dezvoltării sau implementării.
Migrează: Reîmprospătare
Comanda `PHP Artisan: Comanda Refresh` este folosită pentru a reveni toate migrațiile și apoi le rulați din nou. Aceasta înseamnă că returnează fiecare migrație care a fost aplicată (executarea metodei `Down ()` a fiecărei migrații) și apoi rulează din nou metoda `up ()` pentru ca fiecare migrație să reconstruiască schema bazei de date de la zero.
- Ce face:
- Ridicați toate migrațiile (anulează toate schimbările de schemă).
- Re-rulează toate migrațiile pentru a reconstrui schema bazei de date.
- Cazuri tipice de utilizare:
- Util atunci când doriți să resetați schema bazei de date, păstrând în același timp structura bazei de date prin migrații.
- Permite testarea migrațiilor pentru a se asigura că pot fi aplicate curat de mai multe ori.
-Adesea combinat cu opțiunea `--seed` (` php artizan migrat: reîmprospătare-seseed`) pentru a repopula baza de date cu datele de semințe după reconstrucția acesteia.
- Avantaje:
- Menține structura bazei de date consecventă prin aplicarea corectă a metodelor `Down ()` și `up ()`.
-Poate reîmprospăta selectiv un număr limitat de migrații folosind opțiunea `--step` (de exemplu,` PHP Artisan Migrate: Refresh --step = 5` va returna și va rula ultimele cinci migrații).
- Performanță:
- Poate fi mai lent decât `migrează: proaspăt` atunci când aveți de -a face cu un număr mare de migrații, deoarece execută metoda` Down () `pentru fiecare migrație înainte de a le aplica.
- Date:
- Întrucât va returna toate migrațiile, datele din tabele se vor pierde, cu excepția cazului în care sunt re-semenează.
- Păstrează logica de rollback definită în migrații, astfel încât să poată preveni neconcordanțele dacă migrațiile în jos sunt scrise cu atenție.
Migrare: Resetare
Comanda `PHP Artisan: Reset` Command relatează toate migrațiile aplicate, returnând baza de date la starea sa originală ne-migrată.
- Ce face:
- Ridicați toate migrațiile prin executarea metodei `Down ()` a fiecărei migrații.
- Spre deosebire de `Refresh`, nu a condus migrațiile.
- Cazuri tipice de utilizare:
- Util atunci când doriți să anulați complet toate migrațiile fără a le aplica.
- Ajută în scenarii în care trebuie să ștergeți complet schema înainte de a decide ce să faceți în continuare.
- Avantaje:
- Șterge toate modificările schemelor bazelor de date bazate pe migrație.
- Date:
- Ca și în cazul `Refresh`, migrațiile înapoi are ca rezultat pierderea datelor din tabel.
- Nici o schemă nu va exista odată ce toate migrațiile vor fi resetate.
- comportament:
- Lasă baza de date într-o stare ne-migrată.
- necesită rularea manuală a `PHP Artisan Migrate` ulterior dacă intenționează să reconstruiască schema.
Context suplimentar: Migrare: Comparație nouă
Deși nu este întrebat direct, comanda „migrare: proaspăt” este adesea confundată cu „actualizare” și „resetare” și ajută la clarificarea diferențelor în continuare:
- `PHP Artisan Migrate: Fresh` aruncă toate tabelele din baza de date direct, fără a rula metodele` Down () `, apoi rulează toate migrațiile.
- Este mai rapid, deoarece, în loc să se retragă migrația prin migrație, aruncă doar toate tabelele.
- Ideal pentru medii de dezvoltare în care ștergerea bazei de date curată fără logică de rollback este acceptabilă.
-Ca și `Refresh`, poate fi combinat cu` --seed` pentru a repopula datele (de exemplu, `migrează: proaspăt --seed`).
Explicație mai profundă a diferențelor
- Cum se întâmplă derulare:
- `Refresh` și` Reset` se bazează pe metodele `Down ()` ale fiecărei migrații pentru a anula modificările schemei.
- „Resetare” se întoarce totul și se oprește.
- `Refresh` rostogolește totul și apoi migrează totul din nou.
- starea bazei de date după comandă:
- După `resetare`, schema bazei de date este goală (fără tabele din migrații).
- După `Refresh`, schema bazei de date este reconstruită ca și cum ar fi migrat proaspăt.
- Pierderea datelor:
- Ambele comenzi provoacă pierderi de date, deoarece toate migrațiile sunt reduse complet.
-`Refresh` poate reintroduce automat datele semințelor dacă se folosește steagul„-sesed ”.
- Utilizați cazuri în ciclul de viață de dezvoltare:
- Utilizați `Refresh` atunci când dezvoltați sau testați migrațiile și doriți să vă reconstruiți schema, în timp ce resetați datele.
- Utilizați `Resetare` pentru a șterge complet schema de migrație înainte de a aplica manual noi migrații sau de a rula un migrat nou.
Note practice pentru dezvoltatorii Laravel
- Ambele comenzi depind de faptul că migrațiile sunt scrise în mod corespunzător cu metode `up ()` și `down ()`, adică dacă metodele `Down () 'lipsesc sau incomplete, comenzile de rollback (` actualizare și `resetare') pot eșua sau părăsi baza de date într -o stare inconsistentă.
- `Refresh` poate fi considerat mai sigur decât` Fresh` în medii în care doriți să respectați logica de rolback și relațiile de date potențiale în timpul dezlegării migrației.
- Niciuna dintre comandă nu trebuie utilizată nepăsător pe bazele de date de producție fără copii de rezervă, deoarece toate datele vor fi pierdute.
- Sunt concepute în principal pentru a fi utilizate în mediile de dezvoltare locală sau de testare în care iterarea schemelor este frecventă și datele pot fi resetate fără consecințe.
Rezumat
Distincția cheie este:
- Migrează: Reîmprospătare - Rolați toate migrațiile, apoi rulați din nou toate migrațiile.
- Migrați: resetați - rostogoliți toate migrațiile, dar nu le re -rulați.
`Migrare: Refresh` reconstruiește efectiv schema de la zero prin rollback și migrează, permițând re-seeding și reîmprospătare în trepte, în timp ce„ migrează: resetare ”returnează pur și simplu baza de date într-o stare nemigrat.
Ambele comenzi sunt instrumente fundamentale pentru ca dezvoltatorii Laravel să gestioneze versiunile bazei de date, dar servesc diferite fluxuri de lucru și au impacturi unice asupra stării bazei de date.
Această înțelegere ajută la alegerea comenzii potrivite pentru diferite etape de dezvoltare, testare și implementare a aplicațiilor.
Fiecare utilizare ar trebui să ia în considerare implicațiile pentru pierderea de date, consistența schemei de aplicații și intenția dezvoltatorului pentru gestionarea migrațiilor bazelor de date într -un proiect Laravel.