Menambahkan kolom baru ke tabel yang ada di migrasi

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?

Mengomentari pertanyaan (2)
Larutan

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(&#39;dibayar&#39;)->setelah(&#39;whichever_column&#39;); untuk menambahkan bidang ini setelah kolom tertentu.

Komentar (20)

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!

Komentar (2)

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.

Komentar (0)

laravel 5.6 dan di atas

jika anda ingin menambahkan kolom baru sebagai FOREIGN KEY untuk tabel yang ada.

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

Komentar (1)

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.

Komentar (3)

anda dapat memodifikasi yang sudah ada file migrasi, misalnya menambahkan kolom dalam tabel, dan kemudian di terminal anda mengetik :

$ php artisan migrate:refresh
Komentar (4)

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.

Komentar (0)

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
Komentar (0)

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(&#39;pengguna&#39;, fungsi(\Illuminate\Database\Skema\Blueprint $tabel){ $tabel->integer(&#39;dibayar&#39;); })



(Di sini adalah diformat untuk dibaca) php Skema::tabel(&#39;pengguna&#39;, fungsi(\Illuminate\Database\Skema\Blueprint $tabel){ $tabel->integer(&#39;dibayar&#39;); });

Komentar (0)