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
,因为它已从架构中删除。
我需要在 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
,因为它已从架构中删除。