Dodajanje novega stolpca v obstoječo tabelo v migraciji

Ne morem ugotoviti, kako dodati nov stolpec v obstoječo tabelo podatkovne zbirke z uporabo ogrodja Laravel.

Poskušal sem urediti migracijsko datoteko z uporabo...

<?php

public function up()
{
    Schema::create('users', function ($table) {
        $table->integer("paid");
    });
}

V terminalu izvedem php artisan migrate:install in migrate.

Kako lahko dodam nove stolpce?

Rešitev

Za ustvarjanje migracije lahko uporabite ukaz migrate:make v vmesniku Artisan CLI. Uporabite posebno ime, da se izognete navzkrižju z obstoječimi modeli.

za Laravel 3:

php artisan migrate:make add_paid_to_users

za Laravel 5+:

php artisan make:migration add_paid_to_users_table --table=users

Nato morate uporabiti metodo Schema::table() (ker dostopate do obstoječe tabele in ne ustvarjate nove). Stolpec lahko dodate na naslednji način:

public function up()
{
    Schema::table('users', function($table) {
        $table->integer('paid');
    });
}

in ne pozabite dodati možnosti povratka:

public function down()
{
    Schema::table('users', function($table) {
        $table->dropColumn('paid');
    });
}

Nato lahko zaženete migracije:

jezik: bash -->

php artisan migrate

Vse to je dobro opisano v dokumentaciji za Laravel 3:

In za Laravel 4 / Laravel 5:

Urejanje:

uporabite $table->integer('paid')->after('whichever_column');, da dodate to polje za določenim stolpcem.

Komentarji (20)

Če uporabljate Laravel 5, je ukaz naslednji;

php artisan make:migration add_paid_to_users

Vsi ukazi za izdelavo stvari (kontrolerji, modeli, migracije itd.) so bili preneseni pod ukaz make:.

Vendar je ukaz php artisan migrate še vedno enak.

Komentarji (0)

Nove stolpce lahko dodate v začetni metodi Schema::create na naslednji način:

Schema::create('users', function($table) {
    $table->integer("paied");
    $table->string("title");
    $table->text("description");
    $table->timestamps();
});

Če ste že ustvarili tabelo, ji lahko dodate dodatne stolpce tako, da ustvarite novo migracijo in uporabite metodo Schema::table:

Schema::table('users', function($table) {
    $table->string("title");
    $table->text("description");
    $table->timestamps();
});

Dokumentacija je o tem precej natančna in se od različice 3 do različice 4 ni preveč spremenila.

Komentarji (3)