Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database Laravel框架上的removeColumn和dropColumn方法有什么区别?_Database_Laravel_Database Migration - Fatal编程技术网

Database Laravel框架上的removeColumn和dropColumn方法有什么区别?

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()实际

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

通常的代码是:

$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');
});