Database Laravel框架上的removeColumn和dropColumn方法有什么区别?
我需要在Laravel迁移中从表中删除一列 通常的代码是:Database Laravel框架上的removeColumn和dropColumn方法有什么区别?,database,laravel,database-migration,Database,Laravel,Database Migration,我需要在Laravel迁移中从表中删除一列 通常的代码是: $table->dropColumn([ 'city', 'country' ]); 但要使用dropColumn()方法,必须安装DBAL包 在寻找另一种解决方案时,我发现removeColumn()method(): 但似乎不起作用。它什么也不做,没有发生故障,并保留完整的列 removeColumn和dropColumn方法之间有什么区别 removeColumn()方法的用途是什么?该方法removeColumn()实际
$table->dropColumn([ 'city', 'country' ]);
但要使用dropColumn()
方法,必须安装DBAL
包
在寻找另一种解决方案时,我发现removeColumn()
method():
但似乎不起作用。它什么也不做,没有发生故障,并保留完整的列
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');
});
创建的表将不包含列
foo
,因为它已从架构中删除。谢谢,现在我明白了为什么迁移中不使用removeColumn()
方法。这种方法的实际应用是什么?老实说,我不知道。也许它可以用于动态构建模式的更复杂场景…@juanantonitubío这个问题回答正确。只是好奇为什么它没有标记为已回答?谢谢你的警告@Omisakinoruwatobi。很久以前,我就知道这个问题了,显然,我忘了标记它!没问题,很高兴你把它标记为已回答。显然,我最近从这个答案中受益匪浅,我认为这会增加问题被发现的机会。
Schema::create('foo', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
$table->string('foo')->nullable();
$table->string('bar');
$table->removeColumn('foo');
});