Php artisan memigrasikan file tertentu

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

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

  • MariaDB 10. 3+
  • MySQL5. 7+
  • PostgreSQL 10. 0+
  • SQLite 3. 8. 8+
  • SQL Server 2017+

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

Pembibitan adalah metode sederhana untuk menghasilkan data dummy untuk aplikasi Anda selama pengujian

Migrasi juga mendukung developer dengan membantu pengorganisasian lingkungan, validasi, dan implementasi yang aman dari modifikasi skema

Php artisan memigrasikan file tertentu

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 migrasi

Setiap file migrasi menentukan tabel di database Anda. Ini berisi skema untuk membuat atau memodifikasi tabel itu di database. Laravel menggunakan perintah

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
8 Artisan untuk membuat migrasi database

php artisan make:migration create_users_table
_

Perintah membuat file migrasi di direktori database/migrasi aplikasi Anda. Laravel menggunakan awalan stempel waktu dalam nama file migrasi untuk menentukan urutan migrasi—misalnya,

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
9

Laravel 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

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
0 dengan perintah
id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
8

php artisan make:migration create_users_table --path=app/database/migrations

Struktur migrasi

File migrasi yang dihasilkan memiliki definisi kelas dengan metode

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
2 dan
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
3 secara default. Metode
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
_2 dipanggil setiap kali Anda menjalankan migrasi. Namun, metode
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
_3 dipanggil setiap kali migrasi database dibatalkan

Anda dapat mengubah database dengan menambahkan tabel, kolom, atau indeks baru menggunakan metode

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
6, sedangkan metode
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
3 melakukan operasi metode
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
6 dalam arah sebaliknya.  

Misalnya, metode

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
_6 berisi skema untuk membuat tabel baru, menambahkan kolom baru ke tabel, atau memodifikasi kolom yang ada, sedangkan metode
php artisan config:cache
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

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}

php artisan config:cache
_1 menunjukkan bahwa kita sedang membuat tabel.
php artisan config:cache
_2  menghapus tabel yang ditentukan (yang dalam hal ini adalah 'pengguna') jika ada di database setiap kali migrasi dibatalkan

Menjalankan migrasi

Sebelum 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

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=

Membersihkan cache bersifat opsional, tetapi mungkin diperlukan di sini. Jalankan perintah berikut di terminal untuk melakukannya

php artisan config:cache

Gunakan perintah Artisan

php artisan config:cache
3 untuk mengeksekusi semua migrasi Anda yang tertunda ke database

php artisan migrate

Berdasarkan migrasi yang ditentukan sebelumnya, Anda akan melihat tabel pengguna di database Anda dengan lima kolom.

php artisan config:cache
4,
php artisan config:cache
5,
php artisan config:cache
6,
php artisan config:cache
7, dan
php artisan config:cache
8.
php artisan config:cache
_9 dalam file migrasi Anda menghasilkan kolom
php artisan config:cache
7 dan
php artisan config:cache
8 untuk database

Tabel, kolom, dan indeks

Database 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

Tabel

Membuat tabel

Tabel adalah kumpulan objek data dalam database yang disusun dalam format tabel yang terdiri dari baris dan kolom

Anda dapat menggunakan metode

php artisan migrate
_2 pada fasad Skema untuk membuat tabel database baru. Metode
php artisan migrate
_2 membutuhkan dua argumen. nama tabel sebagai argumen pertama dan penutupan yang menerima objek Cetak Biru untuk mendefinisikan tabel baru sebagai argumen kedua

Seperti yang Anda lihat pada potongan kode di bawah,

php artisan migrate
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
php artisan migrate
5

Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });

php artisan migrate
6. Ini membuat kolom string yang disebut nama di tabel pengguna

php artisan migrate
7. Ini membuat kolom ID penambahan otomatis yang akan menjadi kunci utama untuk tabel ini

php artisan migrate
8. Ini membuat kolom updated_at dan created_at TIMESTAMP. Kolom ini akan berisi cap waktu masing-masing saat data dimasukkan dan diperbarui dalam database

Kolom ini tidak wajib. Anda memutuskan kolom yang akan disertakan berdasarkan kebutuhan aplikasi Anda

Memodifikasi tabel Anda

Untuk mengganti nama tabel, gunakan metode

php artisan migrate
_9 pada fasad
Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
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 lama

Dalam cuplikan kode di bawah, kami telah mengganti nama tabel

php artisan migrate
5 menjadi
Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
2

Schema::rename($from, $to);

Schema::rename('users', 'fund_users');

Anda dapat menggunakan metode

Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
_3 pada fasad Skema untuk menghapus tabel. Menjatuhkan tabel adalah kebalikan dari membuat, sehingga bisa dalam metode
Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
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

php artisan migrate
5. Anda dapat lebih berhati-hati dengan menggunakan
Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
_6, sehingga akan memeriksa apakah tabel ada sebelum menjatuhkannya, dan jika tidak ada, melanjutkan eksekusi ke perintah berikutnya tanpa mencoba untuk menjatuhkan

Jika Anda menggunakan

Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
_7 untuk tabel yang tidak ada, ini menghentikan eksekusi dan mengembalikan pesan kesalahan

Schema::drop('users');

//or
 
Schema::dropIfExists('users');

Ada banyak metode Skema berguna lainnya yang ada di.  

Berikut beberapa contohnya

Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
8. Ini memeriksa apakah database memiliki tabel bernama
php artisan migrate
5

Schema::rename($from, $to);

Schema::rename('users', 'fund_users');
0. Ini memeriksa apakah database memiliki tabel
php artisan migrate
5 dengan kolom bernama
php artisan config:cache
6

Kolom

Dalam 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 kolom

Untuk memperbarui tabel yang ada dengan kolom tambahan, gunakan metode table() di fasad Skema. Ia menerima argumen yang sama dengan metode

Schema::rename($from, $to);

Schema::rename('users', 'fund_users');
3. Anda dapat memilih tipe data kolom dari salah satu. Sekarang, dalam kode di bawah ini saya akan menambahkan kolom tambahan
Schema::rename($from, $to);

Schema::rename('users', 'fund_users');
4 ke tabel
php artisan migrate
5

Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});

Jika Anda telah memigrasikan tabel ke database dan perlu memodifikasi tabel tersebut (misalnya, Anda menambahkan kolom lain), Anda harus membuat file migrasi baru untuk modifikasi.  

Hal ini karena file migrasi telah dijalankan kecuali jika Anda memilih untuk mengembalikan migrasi, membuat perubahan pada file, dan melakukan migrasi lagi. Mengembalikan migrasi berarti menghapus tabel/kolom itu serta data yang ada di dalamnya; .  

Selain itu, Laravel menyediakan yang memungkinkan kolom memiliki properti tambahan. Dengan ini, Anda dapat memberikan nilai default pada kolom dompet dengan pengubah

Schema::rename($from, $to);

Schema::rename('users', 'fund_users');
6

php artisan make:migration create_users_table --path=app/database/migrations
0

Menjatuhkan kolom

Untuk menjatuhkan kolom, Anda dapat menggunakan metode

Schema::rename($from, $to);

Schema::rename('users', 'fund_users');
_7 pada fasad
Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
0. Dalam metode
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
_3 file migrasi ini, Anda dapat menjatuhkan kolom

php artisan make:migration create_users_table --path=app/database/migrations
1

Saya menulis artikel yang menjelaskan penambahan dan penghapusan kolom dari tabel yang ada dalam migrasi laravel

Memodifikasi kolom

Untuk memodifikasi/mengganti nama kolom, Anda harus menggunakan manajer paket Composer untuk menginstal paket

Schema::drop('users');

//or
 
Schema::dropIfExists('users');
0. Untuk menginstalnya, jalankan perintah ini

php artisan make:migration create_users_table --path=app/database/migrations
2

Selain itu, Anda perlu menyertakan konfigurasi berikut di file config/database. php untuk menggunakan metode

Schema::drop('users');

//or
 
Schema::dropIfExists('users');
1

php artisan make:migration create_users_table --path=app/database/migrations
_3

Anda sekarang dapat menggunakan metode

Schema::drop('users');

//or
 
Schema::dropIfExists('users');
_2 untuk mengubah tipe dan atribut kolom yang sudah ada

php artisan make:migration create_users_table --path=app/database/migrations
_4

Anda dapat menggunakan metode

Schema::drop('users');

//or
 
Schema::dropIfExists('users');
_3 pada fasad
Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
0 untuk mengganti nama kolom. Mari ganti nama
php artisan config:cache
5 menjadi
Schema::drop('users');

//or
 
Schema::dropIfExists('users');
6

php artisan make:migration create_users_table --path=app/database/migrations
5

Indeks

Indeks 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

Schema::drop('users');

//or
 
Schema::dropIfExists('users');
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
Schema::drop('users');

//or
 
Schema::dropIfExists('users');
8 di tabel
php artisan migrate
5 menjadi unik.  

php artisan make:migration create_users_table --path=app/database/migrations
_6

Ada 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

Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
_0 ke database Anda dalam file migrasi baru. Tabel
Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
_0 harus memiliki kunci asing untuk mereferensikan pengguna yang memiliki buku tersebut. Konvensi penamaan yang baik untuk kunci asing di Laravel adalah
Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
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

Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
3 dan
Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
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 ditentukan

Gunakan

Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
_5 dalam contoh ini merujuk kolom
php artisan config:cache
4 pada tabel
php artisan migrate
5. Dalam metode ini, Anda harus mendefinisikan user_id sebagai
Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
8 sebelum menentukan properti kunci asingnya.  

php artisan make:migration create_users_table --path=app/database/migrations
_7

Laravel 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

Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
8 dan menyertakan properti
Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
3 dan
Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
4 ke kunci asing atau juga mendeklarasikan
Schema::table('users', function (Blueprint $table) {
    $table->double('wallet');
});
8. Anda juga dapat melanjutkan dan menyertakan properti kunci asing lainnya seperti
php artisan make:migration create_users_table --path=app/database/migrations
03, dll

php artisan make:migration create_users_table --path=app/database/migrations
_8

Metode

php artisan make:migration create_users_table --path=app/database/migrations
_03 adalah opsional dan memungkinkan Anda menentukan nama tabel jika konvensi tidak sesuai dengan nama tabel Anda

Metode

php artisan make:migration create_users_table --path=app/database/migrations
_05 dan
php artisan make:migration create_users_table --path=app/database/migrations
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

Setiap pengubah kolom tambahan harus dipanggil sebelum

php artisan make:migration create_users_table --path=app/database/migrations
07

php artisan make:migration create_users_table --path=app/database/migrations
_9

Menghapus migrasi

Tidak ada perintah Artisan untuk menghapus migrasi. Namun, menghapus migrasi bergantung pada apakah migrasi tersebut telah dieksekusi di database atau tidak

Gunakan

php artisan make:migration create_users_table --path=app/database/migrations
_08 untuk memeriksa apakah migrasi Anda telah dijalankan jika Anda tidak yakin

Jika Anda belum menjalankan

php artisan make:migration create_users_table --path=app/database/migrations
_09 untuk menjalankan migrasi, Anda dapat menghapus file migrasi

Namun, jika migrasi sudah dijalankan, Anda harus mengikuti langkah-langkah ini

  1. Akan lebih baik untuk membatalkan migrasi itu dengan menjalankan
    php artisan make:migration create_users_table --path=app/database/migrations
    10. Ingatlah bahwa Anda tidak ingin membatalkan semua migrasi, jadi sertakan nomor kumpulan migrasi yang akan dibatalkan. Seharusnya terlihat seperti
    php artisan make:migration create_users_table --path=app/database/migrations
    _11
    php artisan make:migration create_users_table --path=app/database/migrations
    12
  2. Kemudian, hapus file migrasi

Menekan migrasi

Saat 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

php artisan make:migration create_users_table --path=app/database/migrations
13

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
0

Saat 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 migrasi

Laravel 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.  

  • php artisan make:migration create_users_table --path=app/database/migrations
    _14. Ini digunakan ketika kumpulan migrasi akan segera dieksekusi
  • php artisan make:migration create_users_table --path=app/database/migrations
    _15. Ini digunakan ketika satu migrasi akan segera dieksekusi
  • php artisan make:migration create_users_table --path=app/database/migrations
    _16. Ini digunakan ketika kumpulan migrasi telah mengakhiri eksekusi
  • php artisan make:migration create_users_table --path=app/database/migrations
    _17. Ini digunakan ketika satu migrasi telah mengakhiri eksekusi.  

Peristiwa ini memperpanjang kelas

php artisan make:migration create_users_table --path=app/database/migrations
_18 secara default. Sekarang, Anda dapat mendaftarkan yang sesuai dengan salah satu peristiwa ini di direktori app\Providers\EventServiceProvider

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
_1

Anda dapat membaca resmi untuk memahami acara dengan lebih baik

Perintah migrasi lainnya

Laravel memiliki beberapa perintah Artisan lain yang membuat migrasi mudah digunakan, termasuk yang berikut ini

Mengembalikan migrasi

Anda mungkin ingin mengembalikan kumpulan migrasi terakhir ke database Anda. Alih-alih menghapus kolom dan tabel dari pengelola database, Anda dapat menjalankan perintah Artisan ini

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
_2

Anda juga dapat mengembalikan beberapa kumpulan migrasi menggunakan opsi

php artisan make:migration create_users_table --path=app/database/migrations
19 dan nomor kumpulan. Laravel melacak semua
php artisan make:migration create_users_table --path=app/database/migrations
20 pada tabel migrasi, termasuk nomor batch migrasi

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
_3

Ini 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 migrasi

Anda dapat menggunakan perintah

php artisan make:migration create_users_table --path=app/database/migrations
_21 untuk mengembalikan semua migrasi aplikasi Anda di database

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
_4

Migrasi yang menyegarkan

Anda dapat menggunakan perintah

php artisan make:migration create_users_table --path=app/database/migrations
_22 untuk membuat ulang seluruh database Anda. Ini mengembalikan semua migrasi Anda dan menjalankan perintah migrasi lagi

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
5

Perintah itu sering disalahartikan sebagai

php artisan make:migration create_users_table --path=app/database/migrations
_23. Perintah
php artisan make:migration create_users_table --path=app/database/migrations
_23 menghapus semua tabel dalam database sebelum menjalankan perintah migrasi.  

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
_6

Kehati-hatian ekstra harus dilakukan dengan

php artisan make:migration create_users_table --path=app/database/migrations
_25 pada aplikasi yang berbagi basis data karena menghapus semua tabel dalam basis data itu

Membuat model dengan migrasi

Saat membuat model, Anda dapat menggunakan opsi —migration (atau -m) untuk membuat migrasi database yang sesuai

id();
            $table->string('name');
            $table->string('role');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('user');
    }
}
_7

Dengan menggunakan perintah ini, Laravel membuat Genre. php model file di direktori app/Model dan

php artisan make:migration create_users_table --path=app/database/migrations
26 file migrasi di database/migrasi

Anda 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)