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

时间:2015-05-15 09:53:58

标签: database laravel database-migration

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

通常的代码是:

$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()方法是什么?

1 个答案:

答案 0 :(得分:12)

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

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

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

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

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