1. ホーム
  2. laravel

Laravel 5+でデータベースからカラムを削除する

2023-09-16 22:42:46

質問

私は、あるブログで articles テーブル Schema はこのように定義されます。

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');
}

カラムを削除したい comment_countview_count テーブルの既存のデータを失うことなく

このように新しいマイグレーションを定義しました。

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');
       });
   }
}

で、私は php artisan migrate . 正常に移行されましたが、2つの列はドロップされません。

私は何を間違えているのでしょうか?テーブルの既存のデータを失うことなく、これらの列を削除するにはどうすればよいですか?

どのように解決するのですか?

マイグレーションは以下のようになります。

 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');
          });
      }
  }

新しいマイグレーションで、この列を削除したいので、アップメソッドのdropColumn、。あなたがロールバックする場合は、別の時間、2つの列を持っています。