2016-06-04 18 views
13

habe ich einen Blog, für die die articles Tabelle Schema wie folgt definiert ist:Spalt aus der Datenbank in Laravel Entfernen 5.2

public function up() 
{ 
    Schema::create('articles', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('user_id')->unsigned(); 
     $table->string('title'); 
     $table->string('thumb')->nullable(); 
     $table->text('excerpt'); 
     $table->text('body'); 
     $table->string('slug')->unique(); 
     $table->integer('comment_count')->unsigned()->default(0); 
     $table->integer('view_count')->unsigned()->default(0); 
     $table->timestamps(); 
     $table->softDeletes(); 
} 

public function down() 
{ 
    Schema::drop('articles'); 
} 

ich die Spalten fallen will comment_count und view_count ohne

vorhandene Daten in der Tabelle zu verlieren

definiert ich eine neue Migration wie folgt aus:

class RemoveCommentViewCount extends Migration 
{ 
    public function up() 
    { 
     //nothing here 
    } 

    public function down() 
    { 
     Schema::table('articles', function($table) { 
      $table->dropColumn('comment_count'); 
      $table->dropColumn('view_count'); 
     }); 
    } 
} 

und ich habe php artisan migrate. Es wurde erfolgreich migriert, aber die beiden Spalten werden nicht gelöscht.

Was mache ich falsch? Wie kann ich diese Spalten löschen, ohne die vorhandenen Daten in der Tabelle zu verlieren?

+1

Wie von @ Sangar82 gezeigt, ist i die 'up()' Methode, die ausgelöst wird, wenn Sie den 'php artisan migrate' ausführen. Die Methode 'down()' wird ausgelöst, wenn Sie 'migrate: refresh' oder' rollback' ausführen, wie unten beschrieben. – daneczech

Antwort

24

Ihre Migration muss wie folgt aussehen:

Class RemoveCommentViewCount extends Migration 
    { 
     public function up() 
     { 
      Schema::table('articles', function($table) { 
      $table->dropColumn('comment_count'); 
      $table->dropColumn('view_count'); 
      }); 
     } 

     public function down() 
     { 
      Schema::table('articles', function($table) { 
      $table->integer('comment_count'); 
      $table->integer('view_count'); 
      }); 
     } 
    } 

Die dropColumn in der up-Methode, weil mit neuen Migration Sie diese Spalten löschen möchten. Wenn Sie einen Rollback machen, können Sie ein anderes Mal die beiden Spalten

+0

Es hat funktioniert. Danke. +1 – byteseeker

+2

Sie können mehrere Spalten aus einer Tabelle löschen, indem Sie ein Array mit Spaltennamen an die Methode dropColumn übergeben: $ table-> dropColumn (['votes', 'avatar', 'location']); – mcmacerson

0

einfach diesen Code Fügen Sie in Ihrem nach unten() Funktion in migration.php Datei

Schema::table('articles', function (Blueprint $table) { 
    $table->integer('comment_count')->unsigned()->default(0); 
    $table->integer('view_count')->unsigned()->default(0); 
}); 

und dann laufen ->php Handwerker migrieren: rollback

Verwandte Themen