2017-02-27 22 views
0

私はもはや必要ではないテーブルの前に私のテーブルに名前im_uselessという名前の列を挿入しました。Laravel 5 - マイグレーションを使用:パス付きロールバック

これは私のスキーマ(ファイル名:2017_02_27_120313_units.php):ある

public function up() 
{ 
    Schema::create('units', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->string('description'); 
     $table->string('im_useless'); 
     $table->timestamps(); 
    }); 
} 

今、私はそれを削除しようとするので、私はdown()関数内でこのコードを使用:

public function down() 
{ 
    Schema::dropColumn('im_useless'); 
} 

新しいスキーマ:

public function up() 
{ 
    Schema::create('units', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->string('name'); 
     $table->string('description'); 
     $table->timestamps(); 
    }); 
} 

これでロールバックしてからもう一度移行する必要があります。 php artisan help migrate:rollbackを実行して特定の移行ファイルのみをロールバックしようとしました。--pathオプションがあることがわかりました。

だから私はこのような、特定の移行のロールバックしようとした:

php artisan migrate:rollback --path=2017_02_27_120313_units.php 

をしかし、私は、他の移行をロールバックすることなく、その特定の列を削除することができますNothing to rollback

どのように取得しますか?


UPDATE:私のPHPのシェルは、プロジェクトのルートフォルダに開設されて以来

php artisan migrate:rollback --path=database/migrations/2017_02_27_120313_units.php 

...:私は私はこのようなpathを変更することがあると思う

私はまだNothing to rollback

を取得しかし、私はまた私がめちゃめちゃたと思いphp artisan migrate --path=2017_02_27_120313_units.phpphp artisan migrate --path=database/migrate/2017_02_27_120313_units.php

を試してみました...とNothing to migrate


UPDATE 2

を取得私の移行をアップなぜなら、down()関数内のコードを削除したため、テーブルが削除されなかったからです。 https://stackoverflow.com/a/26077506/4684797

+0

使用して移行をされてみてくださいphpmyadmin ... thats私が今日学んだもの – Black

答えて

2

ロールバック機能は、移行する前に問題が発生した場合に備えて、移行する前のバージョンに戻すことができます。特定の列を削除したい場合は、それを新しい移行として扱い、列をup()メソッドで削除する必要があります。

+0

動作しません。このような新しいマイグレーションをしようとすると、ユニットがマイグレーションされます:ユニットの作成 - ユニット=テーブル=テーブル=ユニット 'InvalidArgumentException、ユニットマイグレーションはすでに存在します' – Black

+0

'php artisan make:migration dropColumnFromTable'( 'public' up()'メソッドで '' table''、function(...){Schema :: dropColumn( "column"と 'table'を適切な名前に置き換えます) ");});'。 'down'関数は、' column'を 'table'に追加するように設定できますが、空白のままにすることもできます。 –

-1

実行作曲ダンプ-自動ロードとはるかに複雑なだけで、例えばデータベース内で直接操作を行うよりも、再び

+0

既にこれを試しました。 downvoteは私からのものではありませんbtw。 – Black

+0

私はあなたがSchema :: table( 'units'、function(Blueprint $ table){Schema :: dropColumn( 'im_useless');}内にdropColumnを追加する必要があると思います – AhmedAlawady

+0

同じエラー 'InvalidArgumentException、A Units移行は既に存在する – Black

関連する問題