Laravel Framework 上的 removeColumn 和 dropColumn 方法有什么区别?

What is the difference between removeColumn and dropColumn methods on Laravel Framework?

我需要在 Laravel 迁移中从 table 中删除一列。

通常的代码是:

$table->dropColumn([ 'city', 'country' ]);

但是你必须安装 Doctrine DBAL 包才能使用 dropColumn() 方法。

寻找另一个解决方案,我找到了 removeColumn() 方法 (http://laravel.com/api/5.0/Illuminate/Database/Schema/Blueprint.html#method_removeColumn):

$table->removeColumn('city'); 
$table->removeColumn('country');

但似乎不起作用。它什么都不做,没有失败,并且保留完好无损的列。

removeColumn 和 dropColumn 方法有什么区别?

removeColumn()方法的用途是什么?

removeColumn() 方法对于大多数迁移实际上毫无用处。它只是从蓝图中删除列,而不是实际上从数据库中删除。所以如果你有这个迁移:

Schema::create('foo', function (Blueprint $table) {
    $table->increments('id');
    $table->timestamps();

    $table->string('foo')->nullable();
    $table->string('bar');

    $table->removeColumn('foo');
});

创建的 table 将不包含列 foo,因为它已从架构中删除。