Saya tidak tahu bagaimana cara menambahkan kolom baru ke tabel database saya yang ada menggunakan kerangka Laravel.
Saya mencoba mengedit file migrasi menggunakan ...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
Di terminal, saya menjalankan php artisan migrate:install
dan migrate
.
Bagaimana cara menambahkan kolom baru?
php
laravel
laravel-4
laravel-migrations
kim larsen
sumber
sumber
Jawaban:
Untuk membuat migrasi, Anda dapat menggunakan perintah migrasi: make pada Artisan CLI. Gunakan nama tertentu untuk menghindari bentrok dengan model yang ada
untuk Laravel 3:
untuk Laravel 5+:
Anda kemudian perlu menggunakan
Schema::table()
metode ini (saat Anda mengakses tabel yang ada, bukan membuat yang baru). Dan Anda dapat menambahkan kolom seperti ini:dan jangan lupa untuk menambahkan opsi rollback:
Kemudian Anda dapat menjalankan migrasi Anda:
Ini semua tercakup dalam dokumentasi untuk kedua Laravel 3:
Dan untuk Laravel 4 / Laravel 5:
Edit:
gunakan
$table->integer('paid')->after('whichever_column');
untuk menambahkan bidang ini setelah kolom tertentu.sumber
php artisan migrate
php artisan make:migration add_paid_to_users
Saya akan menambahkan jawaban mike3875 untuk pembaca masa depan menggunakan Laravel 5.1 dan seterusnya.
Untuk mempercepat, Anda dapat menggunakan tanda "--table" seperti ini:
Ini akan menambahkan konten
up
dandown
metode metode:Demikian pula, Anda dapat menggunakan
--create["table_name"]
opsi saat membuat migrasi baru yang akan menambah lebih banyak boilerplate untuk migrasi Anda. Poin kecil, tetapi membantu ketika melakukan banyak dari mereka!sumber
Blueprint
ditambahkan dalam Laravel 5.1. Hanya satu poin klarifikasi saja.Jika Anda menggunakan Laravel 5, perintahnya adalah;
Semua perintah untuk membuat sesuatu (pengontrol, model, migrasi dll) telah dipindahkan di bawah
make:
perintah.php artisan migrate
masih sama.sumber
laravel 5.6 ke atas
jika Anda ingin menambahkan kolom baru sebagai KUNCI ASING ke tabel yang ada.
Buat migrasi baru dengan menjalankan perintah ini: make: migrasi
Contoh:
Dalam folder basis data / migrasi Anda memiliki file migrasi baru, seperti:
2018_08_08_093431_add_store_id_to_users_table.php (lihat komentar)
Setelah itu jalankan perintah:
Jika Anda ingin membatalkan migrasi terakhir karena alasan apa pun, jalankan perintah ini:
Anda dapat menemukan informasi lebih lanjut tentang migrasi di dokumen
sumber
Anda dapat menambahkan kolom baru dalam
Schema::create
metode awal seperti ini:Jika Anda sudah membuat tabel, Anda bisa menambahkan kolom tambahan ke tabel itu dengan membuat migrasi baru dan menggunakan
Schema::table
metode:Dokumentasi ini cukup menyeluruh tentang hal ini, dan tidak banyak berubah dari versi 3 ke versi 4 .
sumber
create_users_table
, maka jika saya menambahkan kolom:add_email_password_columns_to_users
.add_
kata kerja " " di depan setiap file untuk melacak perubahan. dengan cara ini lebih mudah untuk melacak perubahan untuk kontrol versi dll karena file add baru dibuat untuk setiap iterasi. Jika Anda hanya pergi dan terus memodifikasi "create_
" akan sulit untuk mengetahui bahwa x karyawan, telah mengacaukan sesuatu dengan menghapus indeks, atau menambahkan kolom baru dll. Setidaknya itu masuk akal di kepala saya! :)Anda cukup memodifikasi file migrasi yang ada, misalnya menambahkan kolom di tabel Anda, dan kemudian di terminal Anda mengetik:
sumber
hal ini dikerjakan pada laravel 5.1.
pertama, di terminal Anda jalankan kode ini
setelah itu buka direktori proyek Anda dan perluas basis data direktori - migrasi dan edit file add_paid_to_users.php, tambahkan kode ini
setelah itu kembali ke terminal Anda dan jalankan perintah ini
semoga ini membantu.
sumber
Kembalikan pertama migrasi Anda sebelumnya
Setelah itu, Anda dapat memodifikasi file migrasi yang ada (tambahkan kolom baru, ganti nama atau hapus) kemudian Jalankan Kembali file migrasi Anda
sumber
Meskipun file migrasi adalah praktik terbaik seperti yang disebutkan orang lain, dalam keadaan darurat Anda juga dapat menambahkan kolom dengan tinker.
Berikut ini contoh one-liner untuk terminal:
(Ini diformat agar mudah dibaca)
sumber