Bla*_*ack 4 php symfony doctrine-orm laravel
我需要UserDomainName从数据库表中删除列clients.
起初我doctrine/dbal通过执行composer require doctrine/dbal后安装composer update,如文档中所述.
然后我创建了我想用来删除列的迁移:
php artisan make:migration remove_user_domain_name_from_clients --table=clients
Run Code Online (Sandbox Code Playgroud)
我添加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');
});
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我明白了
Migrating: 2017_08_22_135145_remove_user_domain_name_from_clients
Migrated: 2017_08_22_135145_remove_user_domain_name_from_clients
Run Code Online (Sandbox Code Playgroud)
执行后php artisan migrate但没有删除列.如果我再次执行它,我会得到Nothing to migrate.
Jer*_*dev 14
该down函数用于回滚,您必须dropColumn在up函数中添加该函数,因为它是您在运行迁移时要执行的操作.
所以,在你的up函数中应该有:
Schema::table('clients', function (Blueprint $table) {
$table->dropColumn('UserDomainName');
});
Run Code Online (Sandbox Code Playgroud)
在down函数中你应该反过来,添加列:
Schema::table('clients', function (Blueprint $table) {
$table->string('UserDomainName');
});
Run Code Online (Sandbox Code Playgroud)
这样,您始终可以返回到迁移中的任何位置.