我需要在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()方法是什么?
答案 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
,因为它已从架构中删除。