Skema basis data dapat dimodifikasi dari keadaan yang ada ke keadaan yang diinginkan melalui migrasi. Ini dapat mencakup penambahan tabel dan kolom, menghapus item, atau mengubah jenis dan batasan Show
Misalnya, jika Anda sedang mengerjakan proyek tim dan perlu mengubah persyaratan aplikasi, Anda mungkin ingin mempertimbangkan untuk mengubah database Biasanya, pembaruan. sql dibagikan dengan setiap anggota tim untuk diimpor ke database mereka. Namun, pendekatan ini tidak ideal atau terukur karena banyak hal yang bisa salah dan membuat aplikasi rusak. Misalnya, anggota tim dapat lupa untuk mengimpor file ke database mereka, atau bahkan mengimpor versi lama dari file tersebut. .sql Migrasi bertindak seperti kontrol versi untuk database Anda, memungkinkan tim Anda untuk berbagi dan menentukan skema database aplikasi Anda. Migrasi Laravel sangat penting karena membantu Anda mengatasi masalah kolaborasi database seperti itu untuk sebuah tim. Anggota tim Anda tidak perlu memperbarui database mereka secara manual setiap kali mereka menarik perubahan Anda dari kontrol sumber Dalam tutorial ini, Anda akan mempelajari pentingnya migrasi dalam aplikasi Laravel Anda serta berbagai manfaat migrasi Laravel beserta kasus penggunaannya. Anda juga akan mempelajari berbagai tindakan, perintah, dan peristiwa migrasi Apa itu Migrasi Laravel?Migrasi Laravel memungkinkan pengembang untuk dengan cepat membuat, menghapus, dan memodifikasi database aplikasi tanpa masuk ke pengelola database atau menjalankan kueri SQL apa pun. Sangat penting untuk mengetahui bahwa Laravel menyediakan. Anda cenderung mengalami masalah dukungan saat menggunakannya. Mereka termasuk yang berikut ini
Mengapa Anda menggunakan Migrasi Laravel?Selain dari kontrol versi, migrasi memudahkan untuk mengotomatiskan penerapan dan membuat database sementara untuk menjalankan pengujian. Mereka memungkinkan Anda menyusun model dan tabel dengan mudah dan merupakan fitur penting untuk seeder dalam aplikasi Anda
Migrasi juga mendukung developer dengan membantu pengorganisasian lingkungan, validasi, dan implementasi yang aman dari modifikasi skema Dengan migrasi, Anda dapat mengubah bidang dalam database tanpa menghapus catatan yang ada. Laravel melacak migrasi yang dieksekusi di dalam database. Akibatnya, basis data dapat berkembang seiring dengan perubahan persyaratan aplikasi Cara membuat migrasiSetiap file migrasi menentukan tabel di database Anda. Ini berisi skema untuk membuat atau memodifikasi tabel itu di database. Laravel menggunakan perintah 8 Artisan untuk membuat migrasi database _Perintah membuat file migrasi di direktori database/migrasi aplikasi Anda. Laravel menggunakan awalan stempel waktu dalam nama file migrasi untuk menentukan urutan migrasi—misalnya, 9Laravel mencoba menentukan nama tabel dan tindakan migrasi berdasarkan nama file. Itu juga mengisi sebelumnya file migrasi dengan nama tabel yang ditentukan dari tebakan yang dicoba. Anda dapat menentukan nama tabel secara manual di file migrasi jika upaya tersebut gagal Anda dapat menentukan jalur tertentu dalam aplikasi Anda untuk migrasi yang dihasilkan dengan menggunakan argumen 0 dengan perintah 8
Struktur migrasiFile migrasi yang dihasilkan memiliki definisi kelas dengan metode 2 dan 3 secara default. Metode _2 dipanggil setiap kali Anda menjalankan migrasi. Namun, metode _3 dipanggil setiap kali migrasi database dibatalkanAnda dapat mengubah database dengan menambahkan tabel, kolom, atau indeks baru menggunakan metode 6, sedangkan metode 3 melakukan operasi metode 6 dalam arah sebaliknya. Misalnya, metode _6 berisi skema untuk membuat tabel baru, menambahkan kolom baru ke tabel, atau memodifikasi kolom yang ada, sedangkan metode 0 berisi skema untuk melakukan kebalikannya, seperti menjatuhkan tabel, menjatuhkan kolom, dll.Sekarang, Anda dapat menggunakan untuk membuat atau mengubah tabel dalam salah satu metode ini Mari tentukan migrasi untuk membuat tabel yang disebut pengguna
_1 menunjukkan bahwa kita sedang membuat tabel. _2 menghapus tabel yang ditentukan (yang dalam hal ini adalah 'pengguna') jika ada di database setiap kali migrasi dibatalkanMenjalankan migrasiSebelum menjalankan migrasi Anda,. Perbarui. env di direktori root aplikasi Anda dengan konfigurasi database agar sesuai dengan contoh berikut, mengganti placeholder dengan detail untuk database Anda
Membersihkan cache bersifat opsional, tetapi mungkin diperlukan di sini. Jalankan perintah berikut di terminal untuk melakukannya
Gunakan perintah Artisan 3 untuk mengeksekusi semua migrasi Anda yang tertunda ke database
Berdasarkan migrasi yang ditentukan sebelumnya, Anda akan melihat tabel pengguna di database Anda dengan lima kolom. 4, 5, 6, 7, dan 8. _9 dalam file migrasi Anda menghasilkan kolom 7 dan 8 untuk databaseTabel, kolom, dan indeksDatabase berisi banyak tabel. Kolom dan baris ada di setiap tabel Indeks adalah struktur data yang memfasilitasi operasi pengambilan data yang mudah pada tabel dengan biaya penulisan tambahan dan ruang penyimpanan yang diperlukan untuk memelihara struktur data indeks. Alih-alih menelusuri setiap baris setiap kali tabel database dikunjungi, Anda dapat menggunakan indeks untuk menemukan data dengan cepat TabelMembuat tabelTabel adalah kumpulan objek data dalam database yang disusun dalam format tabel yang terdiri dari baris dan kolom Anda dapat menggunakan metode _2 pada fasad Skema untuk membuat tabel database baru. Metode _2 membutuhkan dua argumen. nama tabel sebagai argumen pertama dan penutupan yang menerima objek Cetak Biru untuk mendefinisikan tabel baru sebagai argumen keduaSeperti yang Anda lihat pada potongan kode di bawah, 4 menerima 'users', yang merupakan nama tabel, sebagai argumen pertama kita. Argumen kedua adalah fungsi penutupan di mana kelas Blueprint dengan objek $table-nya diteruskan sebagai parameter. Objek $table ini digunakan untuk membuat/memodifikasi kolom untuk tabel 5
6. Ini membuat kolom string yang disebut nama di tabel pengguna 7. Ini membuat kolom ID penambahan otomatis yang akan menjadi kunci utama untuk tabel ini 8. Ini membuat kolom updated_at dan created_at TIMESTAMP. Kolom ini akan berisi cap waktu masing-masing saat data dimasukkan dan diperbarui dalam databaseKolom ini tidak wajib. Anda memutuskan kolom yang akan disertakan berdasarkan kebutuhan aplikasi Anda Memodifikasi tabel AndaUntuk mengganti nama tabel, gunakan metode _9 pada fasad 0. Sebelum mengganti nama tabel, konfirmasikan bahwa semua batasan kunci asing pada tabel tersebut memiliki nama eksplisit di file migrasi Anda alih-alih mengizinkan Laravel untuk menetapkan nama berbasis konvensi. Jika tidak, nama batasan kunci asing akan merujuk ke tabel lamaDalam cuplikan kode di bawah, kami telah mengganti nama tabel 5 menjadi 2
Anda dapat menggunakan metode _3 pada fasad Skema untuk menghapus tabel. Menjatuhkan tabel adalah kebalikan dari membuat, sehingga bisa dalam metode 4 dari file migrasi. Dengan cara ini, tabel akan dijatuhkan setiap kali Anda mengembalikan migrasi Anda. Sekarang di cuplikan kode di bawah ini, mari kita lepaskan tabel 5. Anda dapat lebih berhati-hati dengan menggunakan _6, sehingga akan memeriksa apakah tabel ada sebelum menjatuhkannya, dan jika tidak ada, melanjutkan eksekusi ke perintah berikutnya tanpa mencoba untuk menjatuhkanJika Anda menggunakan _7 untuk tabel yang tidak ada, ini menghentikan eksekusi dan mengembalikan pesan kesalahan
Ada banyak metode Skema berguna lainnya yang ada di. Berikut beberapa contohnya 8. Ini memeriksa apakah database memiliki tabel bernama 5 0. Ini memeriksa apakah database memiliki tabel 5 dengan kolom bernama 6KolomDalam database relasional, setiap baris database memiliki kolom terkait yang berisi sekelompok nilai data yang semuanya bertipe sama. Kolom tabel menentukan struktur data, sedangkan barisnya mengisi database dengan data Membuat kolomUntuk memperbarui tabel yang ada dengan kolom tambahan, gunakan metode table() di fasad Skema. Ia menerima argumen yang sama dengan metode 3. Anda dapat memilih tipe data kolom dari salah satu. Sekarang, dalam kode di bawah ini saya akan menambahkan kolom tambahan 4 ke tabel 5
Selain itu, Laravel menyediakan yang memungkinkan kolom memiliki properti tambahan. Dengan ini, Anda dapat memberikan nilai default pada kolom dompet dengan pengubah 6 0Menjatuhkan kolomUntuk menjatuhkan kolom, Anda dapat menggunakan metode _7 pada fasad 0. Dalam metode _3 file migrasi ini, Anda dapat menjatuhkan kolom 1Saya menulis artikel yang menjelaskan penambahan dan penghapusan kolom dari tabel yang ada dalam migrasi laravel Memodifikasi kolomUntuk memodifikasi/mengganti nama kolom, Anda harus menggunakan manajer paket Composer untuk menginstal paket 0. Untuk menginstalnya, jalankan perintah ini 2Selain itu, Anda perlu menyertakan konfigurasi berikut di file config/database. php untuk menggunakan metode 1 _3Anda sekarang dapat menggunakan metode _2 untuk mengubah tipe dan atribut kolom yang sudah ada _4Anda dapat menggunakan metode _3 pada fasad 0 untuk mengganti nama kolom. Mari ganti nama 5 menjadi 6 5IndeksIndeks adalah alat canggih yang digunakan di balik layar dalam database untuk mempercepat kueri. Mengindeks permintaan daya dengan memberi pengguna cara untuk mencari data yang mereka butuhkan dengan cepat Indeks dapat dianggap sebagai penunjuk ke informasi tabel. Sebaiknya berhati-hati saat menggunakan indeks, terutama saat tabel sering diperbarui. Indeks selalu dibuat ulang dengan setiap pembaruan, memperlambat sistem Contoh bagus dari tipe indeks adalah 7. Itu membutuhkan semua nilai di kolom itu untuk menjadi unik. Ini berarti nilai tidak dapat diulang di kolom itu. Dalam contoh berikut, Anda akan membuat indeks untuk kolom 8 di tabel 5 menjadi unik. _6Ada yang lain, termasuk kunci primer dan kunci asing Kunci asing dalam tabel database relasional adalah kolom atau kumpulan kolom yang menghubungkan data dari dua tabel yang berbeda. Itu merujuk ke kunci utama dari tabel lain, membuat tautan antara dua tabel dan berfungsi sebagai referensi silang di antara keduanya Sekarang, perkenalkan tabel _0 ke database Anda dalam file migrasi baru. Tabel _0 harus memiliki kunci asing untuk mereferensikan pengguna yang memiliki buku tersebut. Konvensi penamaan yang baik untuk kunci asing di Laravel adalah 2. Ini karena Laravel mencoba menebak tabel dan kolom yang direferensikan berdasarkan nama kunci asing. Anda juga dapat menyetel kunci asing pilihan Anda, dan menggunakan properti 3 dan 4 untuk masing-masing menunjuk ke kolom dan tabel yang direferensikan. Dengan cara ini, Laravel melompati tebakan yang dicoba dan menggunakan tabel dan kolom yang direferensikan yang telah ditentukanGunakan _5 dalam contoh ini merujuk kolom 4 pada tabel 5. Dalam metode ini, Anda harus mendefinisikan user_id sebagai 8 sebelum menentukan properti kunci asingnya. _7Laravel juga menyediakan metode yang lebih pendek yang hanya menggunakan nama kunci asing untuk menentukan nama tabel dan kolom yang direferensikan. Ini lebih singkat karena tidak perlu mendeklarasikan 8 dan menyertakan properti 3 dan 4 ke kunci asing atau juga mendeklarasikan 8. Anda juga dapat melanjutkan dan menyertakan properti kunci asing lainnya seperti 03, dll _8Metode _03 adalah opsional dan memungkinkan Anda menentukan nama tabel jika konvensi tidak sesuai dengan nama tabel AndaMetode _05 dan 06 memungkinkan Anda untuk menentukan tindakan yang akan diambil saat kunci asing dihapus atau diperbarui. Tindakan kaskade berarti ketika baris di tabel induk dihapus, kolom kunci asing yang cocok di tabel anak juga dihapus, membuat penghapusan berjenjang. Oleh karena itu, jika Anda menghapus pengguna, buku mereka juga akan dihapus
_9Menghapus migrasiTidak ada perintah Artisan untuk menghapus migrasi. Namun, menghapus migrasi bergantung pada apakah migrasi tersebut telah dieksekusi di database atau tidak Gunakan _08 untuk memeriksa apakah migrasi Anda telah dijalankan jika Anda tidak yakinJika Anda belum menjalankan _09 untuk menjalankan migrasi, Anda dapat menghapus file migrasiNamun, jika migrasi sudah dijalankan, Anda harus mengikuti langkah-langkah ini
Menekan migrasiSaat aplikasi Anda berkembang dari waktu ke waktu, mungkin perlu lebih banyak migrasi. Akibatnya, Anda mungkin memperoleh banyak file migrasi di direktori database/migrasi Anda. Anda dapat memasukkan file migrasi Anda ke dalam satu file SQL menggunakan perintah 13 0Saat Anda menjalankan perintah ini, Laravel akan membuat file "skema" di direktori database/skema aplikasi Anda. Setelah itu, jika Anda mencoba memigrasikan database untuk pertama kalinya di aplikasi Anda, Laravel akan menjalankan pernyataan SQL di file skema terlebih dahulu. Kemudian akan menjalankan migrasi yang tersisa yang tidak termasuk dalam dump skema setelah menjalankan baris dalam file skema Peristiwa migrasiLaravel menyediakan beberapa peristiwa migrasi pengiriman yang memungkinkan Anda melakukan tindakan tindak lanjut setelah operasi migrasi dijalankan. Misalnya, Anda dapat mengirim email ke admin setiap kali migrasi selesai dijalankan.
Peristiwa ini memperpanjang kelas _18 secara default. Sekarang, Anda dapat mendaftarkan yang sesuai dengan salah satu peristiwa ini di direktori app\Providers\EventServiceProvider _1Anda dapat membaca resmi untuk memahami acara dengan lebih baik Perintah migrasi lainnyaLaravel memiliki beberapa perintah Artisan lain yang membuat migrasi mudah digunakan, termasuk yang berikut ini Mengembalikan migrasiAnda mungkin ingin mengembalikan kumpulan migrasi terakhir ke database Anda. Alih-alih menghapus kolom dan tabel dari pengelola database, Anda dapat menjalankan perintah Artisan ini _2Anda juga dapat mengembalikan beberapa kumpulan migrasi menggunakan opsi 19 dan nomor kumpulan. Laravel melacak semua 20 pada tabel migrasi, termasuk nomor batch migrasi _3Ini mengembalikan dua kumpulan migrasi terakhir ke database Anda. Anda dapat memeriksa tabel migrasi di database Anda jika Anda tidak yakin dengan nomor batch migrasi yang akan dibatalkan Menyetel ulang migrasiAnda dapat menggunakan perintah _21 untuk mengembalikan semua migrasi aplikasi Anda di database _4Migrasi yang menyegarkanAnda dapat menggunakan perintah _22 untuk membuat ulang seluruh database Anda. Ini mengembalikan semua migrasi Anda dan menjalankan perintah migrasi lagi 5Perintah itu sering disalahartikan sebagai _23. Perintah _23 menghapus semua tabel dalam database sebelum menjalankan perintah migrasi. _6
Membuat model dengan migrasiSaat membuat model, Anda dapat menggunakan opsi —migration (atau -m) untuk membuat migrasi database yang sesuai _7Dengan menggunakan perintah ini, Laravel membuat Genre. php model file di direktori app/Model dan 26 file migrasi di database/migrasiMenutup pikiranAnda telah menempuh perjalanan jauh, selamat Pada artikel ini, Anda telah mempelajari cara menggunakan migrasi untuk meningkatkan aplikasi Laravel Anda. Kode sumber untuk file migrasi, termasuk contoh yang disorot, tersedia di GitHub. Anda juga dapat menemukan informasi lebih lanjut tentang migrasi Laravel di dokumentasi resmi. Sekarang Anda dapat melihat bahwa migrasi diperlukan untuk memantau perubahan basis data, yang membantu deteksi kesalahan dan rollback jika terjadi kesalahan Jika Anda ingin melihat kekuatan Laravel digabungkan dengan ButterCMS, periksa tutorial kami. Cara Membuat Blog dengan Laravel (dan Mengirim Notifikasi Slack) |