Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Apa perbedaan antara migrasi: refresh dan migrasi: reset di laravel


Apa perbedaan antara migrasi: refresh dan migrasi: reset di laravel


Perintah `bermigrasi: refresh` dan` migrasi: reset` di Laravel keduanya terkait dengan mengelola migrasi basis data, tetapi mereka melayani tujuan yang berbeda dan berperilaku dengan cara yang berbeda selama manajemen skema database. Memahami perbedaan mereka sangat penting bagi pengembang Laravel untuk secara efektif menangani status basis data selama pengembangan atau penyebaran.

Migrasi: Segarkan

Perintah `PHP Artisan Migrate: Refresh` digunakan untuk memutar kembali semua migrasi dan kemudian menjalankan semuanya lagi. Ini berarti mengembalikan setiap migrasi yang telah diterapkan (melaksanakan metode `down ()` dari setiap migrasi) dan kemudian menjalankan metode `) ()` `untuk setiap migrasi untuk membangun kembali skema basis data dari awal.

- apa fungsinya:
- Menggulung kembali semua migrasi (membatalkan semua perubahan skema).
- menjalankan kembali semua migrasi untuk membangun kembali skema basis data.
- Kasus Penggunaan Khas:
- Berguna saat Anda ingin mengatur ulang skema basis data sambil menjaga struktur basis data konsisten melalui migrasi.
- Memungkinkan migrasi pengujian untuk memastikan mereka dapat diterapkan dengan bersih beberapa kali.
-Sering dikombinasikan dengan opsi `--seed` (` PHP Artisan Migrate: Refresh --seed`) untuk mengisi kembali database dengan data benih setelah membangunnya kembali.
- Keuntungan:
- Menjaga struktur basis data konsisten melalui aplikasi `down ()` dan `up ()` yang tepat.
-Dapat secara selektif menyegarkan sejumlah migrasi yang terbatas menggunakan opsi `--Step` (mis.,` PHP Artisan Migrate: Refresh --Step = 5` akan memutar kembali dan menjalankan kembali lima migrasi terakhir).
- Pertunjukan:
- Bisa lebih lambat dari `Migrasi: Segar` saat berhadapan dengan sejumlah besar migrasi karena mengeksekusi metode` down () `untuk setiap migrasi sebelum menerapkannya kembali.
- Data:
- Karena menggulung semua migrasi, data dalam tabel akan hilang kecuali jika diunggulkan kembali.
- Melestarikan logika rollback yang didefinisikan di dalam migrasi, sehingga dapat mencegah ketidakkonsistenan jika migrasi turun ditulis dengan cermat.

Migrasi: Reset

Perintah `PHP Artisan Migrate: Reset` menggulung semua migrasi yang telah diterapkan, mengembalikan database ke keadaan asli yang tidak bermigrasi.

- apa fungsinya:
- Menggulung kembali semua migrasi dengan melaksanakan metode `down ()` dari setiap migrasi.
- Tidak seperti `refresh`, itu tidak menjalankan kembali migrasi.
- Kasus Penggunaan Khas:
- Berguna saat Anda ingin benar -benar membatalkan semua migrasi tanpa menampilkannya kembali.
- Membantu dalam skenario di mana Anda perlu menghapus skema sepenuhnya sebelum memutuskan apa yang harus dilakukan selanjutnya.
- Keuntungan:
- Menghapus semua perubahan skema basis data berbasis migrasi.
- Data:
- Seperti `refresh`, migrasi bergulir kembali mengakibatkan hilangnya data tabel.
- Tidak ada skema yang akan ada setelah semua migrasi diatur ulang.
- Perilaku:
- Meninggalkan database dalam keadaan tidak bermigrasi.
- Membutuhkan `PHP Artisan Migrate` secara manual setelah itu jika berniat untuk membangun kembali skema.

Konteks Tambahan: Migrasi: Perbandingan Segar

Meskipun tidak ditanyakan secara langsung, perintah `migrasi: segar` sering dikacaukan dengan` refresh` dan `reset` dan membantu memperjelas perbedaan lebih lanjut:

- `PHP Artisan Migrate: Fresh` menjatuhkan semua tabel dalam database secara langsung, tanpa menjalankan metode` down () `, kemudian menjalankan semua migrasi.
- Ini lebih cepat karena alih -alih memutar kembali migrasi dengan migrasi, itu hanya menjatuhkan semua tabel.
- Ideal untuk lingkungan pengembangan di mana menyeka database bersih tanpa logika rollback dapat diterima.
-Seperti `Refresh`, dapat dikombinasikan dengan` --seed` untuk mengisi kembali data (mis., `Migrasi: segar --seed`).

Penjelasan yang lebih dalam tentang perbedaan

- Bagaimana rollback terjadi:
- `refresh` dan` reset` keduanya mengandalkan `down ()` metode setiap migrasi untuk membatalkan perubahan skema.
- `Reset` memutar kembali semuanya dan berhenti.
- `Refresh` menggulung semuanya dan kemudian memigrasikan semuanya lagi.
- status database demi perintah:
- Setelah `reset`, skema basis data kosong (tidak ada tabel dari migrasi).
- Setelah `refresh`, skema basis data dibangun kembali seolah -olah baru dimigrasi.
- Kehilangan Data:
- Kedua perintah menyebabkan kehilangan data karena semua migrasi digulung sepenuhnya.
-`Refresh` dapat memperkenalkan kembali data benih secara otomatis jika bendera` --seed` digunakan.
- Gunakan kasus dalam siklus hidup pengembangan:
- Gunakan `refresh` saat mengembangkan atau menguji migrasi dan Anda ingin membangun kembali skema Anda sementara mungkin membesarkan kembali data.
- Gunakan `reset` untuk sepenuhnya menghapus skema migrasi sebelum menerapkan migrasi baru secara manual atau menjalankan migrasi baru.

Catatan Praktis untuk Pengembang Laravel

- Kedua perintah bergantung pada migrasi yang ditulis dengan benar dengan metode `up ()` dan `down ()`, yang berarti jika metode `bawah)` tidak lengkap atau tidak lengkap, perintah rollback (`refresh` dan` reset`) dapat gagal atau meninggalkan basis data dalam keadaan yang tidak konsisten.
- `Refresh` dapat dianggap lebih aman daripada` segar` di lingkungan di mana Anda ingin menghormati logika rollback dan hubungan data potensial selama migrasi undo.
- Tidak ada perintah yang harus digunakan secara sembarangan pada database produksi tanpa cadangan, karena semua data akan hilang.
- Mereka terutama dirancang untuk digunakan dalam lingkungan pengembangan atau pengujian lokal di mana iterasi skema sering dan data dapat diatur ulang tanpa konsekuensi.

Ringkasan

Perbedaan utama adalah:

- Migrasi: Refresh - Gulung semua migrasi, lalu jalankan semua migrasi lagi.
- Migrasi: RESET - Gulung semua migrasi tetapi jangan menjalankannya kembali.

`Migrasi: Refresh` secara efektif membangun kembali skema dari awal melalui rollback dan migrasi, memungkinkan penyegaran kembali dan bertahap, sementara` bermigrasi: reset` cukup mengembalikan database ke keadaan yang tidak termigrasi.

Kedua perintah adalah alat mendasar bagi pengembang Laravel untuk mengelola versi basis data, tetapi mereka melayani alur kerja yang berbeda dan memiliki dampak unik pada keadaan database.

Pemahaman ini membantu dalam memilih perintah yang tepat untuk berbagai tahap pengembangan aplikasi, pengujian, dan penyebaran.

Setiap penggunaan harus mempertimbangkan implikasi untuk kehilangan data, konsistensi skema aplikasi, dan niat pengembang untuk mengelola migrasi basis data dalam proyek Laravel.