如何在 Laravel 迁移中删除 'morphs' 列
How to drop 'morphs' columns in Laravel migration
我正在编辑 table 以便它将使用多态关系:
public function up()
{
Schema::table('locations', function (Blueprint $table) {
$table->morphs('location');
});
}
但我不知道逆转这种迁移的最佳方法。我是否必须删除它创建的两列和索引本身,或者是否有一种方法可以在 Laravel 中的一行中执行此操作?谢谢
在 Blueprint
api 中找到这个:
public function dropMorphs($name, $indexName = null)
{
$this->dropIndex($indexName ?: $this->createIndexName('index', ["{$name}_type", "{$name}_id"]));
$this->dropColumn("{$name}_type", "{$name}_id");
}
所以 $table->dropMorphs('location');
如果有人在处理同一问题时遇到这个 post,只有像我这样的 SQLite 数据库,SQLite 不支持一次性删除列和索引。您需要手动完成,并将其分成多个修改,如下所示:
public function down(){
Schema::table('locations', function (Blueprint $table) {
$table->dropcolumn('location_id');
});
Schema::table('locations', function (Blueprint $table) {
$table->dropcolumn('location_type');
});
}
我正在编辑 table 以便它将使用多态关系:
public function up()
{
Schema::table('locations', function (Blueprint $table) {
$table->morphs('location');
});
}
但我不知道逆转这种迁移的最佳方法。我是否必须删除它创建的两列和索引本身,或者是否有一种方法可以在 Laravel 中的一行中执行此操作?谢谢
在 Blueprint
api 中找到这个:
public function dropMorphs($name, $indexName = null)
{
$this->dropIndex($indexName ?: $this->createIndexName('index', ["{$name}_type", "{$name}_id"]));
$this->dropColumn("{$name}_type", "{$name}_id");
}
所以 $table->dropMorphs('location');
如果有人在处理同一问题时遇到这个 post,只有像我这样的 SQLite 数据库,SQLite 不支持一次性删除列和索引。您需要手动完成,并将其分成多个修改,如下所示:
public function down(){
Schema::table('locations', function (Blueprint $table) {
$table->dropcolumn('location_id');
});
Schema::table('locations', function (Blueprint $table) {
$table->dropcolumn('location_type');
});
}