Saya dapat't tahu bagaimana untuk menambahkan kolom baru untuk saya ada tabel database menggunakan framework Laravel.
Saya mencoba untuk 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 bermigrasi
.
Bagaimana cara menambahkan kolom baru?
Untuk membuat migrasi, anda dapat menggunakan bermigrasi:membuat perintah pada Tukang CLI. Menggunakan nama tertentu untuk menghindari bentrok dengan model yang ada
untuk Laravel 3:
php artisan migrate:make add_paid_to_users
untuk Laravel 5+:
php artisan make:migration add_paid_to_users_table --table=users
Anda kemudian perlu untuk menggunakan Skema::meja()
metode (seperti yang anda're mengakses tabel yang ada, bukan membuat yang baru). Dan anda dapat menambahkan kolom seperti ini:
public function up()
{
Schema::table('users', function($table) {
$table->integer('paid');
});
}
dan don't lupa untuk menambahkan rollback pilihan:
public function down()
{
Schema::table('users', function($table) {
$table->dropColumn('paid');
});
}
Kemudian anda dapat menjalankan migrasi:
php artisan migrate
Semua ini tercakup dalam dokumentasi untuk investasi Laravel 3:
Dan untuk Laravel 4 / Laravel 5:
Edit:
gunakan $tabel->integer('dibayar')->setelah('whichever_column');
untuk menambahkan bidang ini setelah kolom tertentu.
I'll menambahkan pada mike3875's jawaban untuk pembaca masa depan menggunakan Laravel 5.1 dan seterusnya.
Untuk membuat hal-hal lebih cepat, anda dapat menggunakan bendera "--meja" seperti ini:
php artisan make:migration add_paid_to_users --table="users"
Ini akan menambahkan naik
dan turun
metode konten secara otomatis:
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
//
});
}
Demikian pula, anda dapat menggunakan --membuat["table_name"]
pilihan ketika membuat migrasi baru yang akan menambah lebih boilerplate untuk migrasi. Titik kecil, tapi berguna ketika melakukan banyak dari mereka!
Jika anda're menggunakan Laravel 5, perintah akan;
php artisan make:migration add_paid_to_users
Semua perintah untuk membuat hal-hal (controller, model, migrasi dll) telah dipindahkan di bawah membuat
perintah.
php artisan migrate
masih sama meskipun.
Buat yang baru migrasi dengan menjalankan perintah ini : penting:migrasi
Contoh :
php artisan make:migration add_store_id_to_users_table --table=users
Di database/migrasi folder yang telah anda baru migrasi file, sesuatu seperti :
2018_08_08_093431_add_store_id_to_users_table.php (lihat komentar)
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddStoreIdToUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
// 1. Create new column
// You probably want to make the new column nullable
$table->integer('store_id')->unsigned()->nullable()->after('password');
// 2. Create foreign key constraints
$table->foreign('store_id')->references('id')->on('stores')->onDelete('SET NULL');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
// 1. Drop foreign key constraints
$table->dropForeign(['store_id']);
// 2. Drop the column
$table->dropColumn('store_id');
});
}
}
Setelah itu jalankan perintah :
php artisan migrate
Dalam kasus anda ingin membatalkan migrasi terakhir untuk alasan apapun, jalankan perintah ini :
php artisan migrate:rollback
Anda dapat menemukan informasi lebih lanjut tentang migrasi di docs
Anda dapat menambahkan kolom baru dalam awal Skema::membuat
metode seperti ini:
Schema::create('users', function($table) {
$table->integer("paied");
$table->string("title");
$table->text("description");
$table->timestamps();
});
Jika anda telah membuat sebuah tabel, anda dapat menambahkan kolom tambahan untuk meja itu dengan menciptakan yang baru migrasi dan menggunakan Skema::meja
metode:
Schema::table('users', function($table) {
$table->string("title");
$table->text("description");
$table->timestamps();
});
Dokumentasi yang cukup menyeluruh tentang ini, dan sudah't berubah terlalu banyak dari version 3 versi 4.
anda dapat memodifikasi yang sudah ada file migrasi, misalnya menambahkan kolom dalam tabel, dan kemudian di terminal anda mengetik :
$ php artisan migrate:refresh
hal-hal ini adalah bekerja pada laravel 5.1.
pertama, pada terminal anda menjalankan kode ini
php artisan make:migration add_paid_to_users --table=users
setelah itu pergi ke direktori proyek anda dan memperluas direktori database - migrasi dan mengedit file add_paid_to_users.php, tambahkan kode ini
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string('paid'); //just add this line
});
}
setelah itu kembali ke terminal dan jalankan perintah ini
php artisan migrate
semoga bantuan ini.
Pertama rollback sebelumnya migrasi
php artisan migrate:rollback
Setelah itu, anda dapat memodifikasi yang sudah ada file migrasi (menambah , mengubah nama atau menghapus kolom) kemudian Kembali Menjalankan file migrasi
php artisan migrate
Meskipun sebuah file migrasi adalah praktek terbaik seperti orang lain telah disebutkan, dalam keadaan darurat anda juga dapat menambahkan kolom dengan bermain-main.
$ php artisan bermain-main
Berikut ini's contoh satu-liner untuk terminal:
php Skema::tabel('pengguna', fungsi(\Illuminate\Database\Skema\Blueprint $tabel){ $tabel->integer('dibayar'); })
(Di sini adalah diformat untuk dibaca)
php Skema::tabel('pengguna', fungsi(\Illuminate\Database\Skema\Blueprint $tabel){ $tabel->integer('dibayar'); });