我需要从数据库表UserDomainName
中删除列clients
。
首先,我执行了doctrine/dbal
,然后执行了composer require doctrine/dbal
composer update
,如documentation中所述。
然后我创建了我想用来删除列的迁移:
php artisan make:migration remove_user_domain_name_from_clients --table=clients
我在Schema::dropColumn('UserDomainName');
方法中添加了down()
:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class RemoveDomainName extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('clients', function (Blueprint $table) {
//
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('clients', function (Blueprint $table) {
Schema::dropColumn('UserDomainName');
});
}
}
然而,我得到了
Migrating: 2017_08_22_135145_remove_user_domain_name_from_clients
Migrated: 2017_08_22_135145_remove_user_domain_name_from_clients
执行php artisan migrate
但没有删除列。
如果我再次执行它,我会得到Nothing to migrate.
答案 0 :(得分:10)
down
函数用于回滚,您必须在dropColumn
函数中添加此up
,因为它是您在运行迁移时要执行的操作。
因此,在您的up
函数中应该有:
Schema::table('clients', function (Blueprint $table) {
$table->dropColumn('UserDomainName');
});
在down
函数中你应该反过来,添加列:
Schema::table('clients', function (Blueprint $table) {
$table->string('UserDomainName');
});
这样,您始终可以返回到迁移中的任何位置。
答案 1 :(得分:0)
要 dropColumn ,你可以这样做
在你的 down 函数中应该有:
public function down()
{
Schema::table('products', function (Blueprint $table) {
$table->dropColumn('UserDomainName');
});
}
然后运行 php 工匠迁移:回滚
就是这样。