我正在尝试使用laravel 4.2中的迁移回滚数据库表中的更新列。
public function up()
{
if (Schema::hasTable('payments') && !Schema::hasColumn('payments', 'updated_at')) {
Schema::table('payments', function (Blueprint $table) {
$table->dateTime('updated_at')->nullable();
});
}
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
if (Schema::hasTable('payments')) {
Schema::table('payments', function (Blueprint $table) {
Schema::drop('updated_at');
});
}
}
当我以这种方式进行操作时,它表明updated_at
表不存在:
Schema::drop('updated_at');
通过这种方式删除了整个表格:
Schema::drop('payments', 'updated_at');
那应该是什么样子?
谢谢你,并祝你一切顺利!
答案 0 :(得分:3)
Schema::drop('updated_at');
告诉数据库删除updated_at
表,该表显然不存在。您需要使用$table->dropColumn('updated_at')
在特定表上添加一列。见下文:
public function down(){
if (Schema::hasTable('payments')) {
Schema::table('payments', function (Blueprint $table) {
$table->dropColumn('updated_at');
});
}
}
您可以看到自己已经在Schema::table("payments" ...)
函数中,因此使用$table->dropColumn()
将尝试从付款表中删除该列。
答案 1 :(得分:1)
使用$table
变量:
Schema::table('payments', function($table)
{
$table->dropColumn('updated_at');
});
答案 2 :(得分:0)
尝试一下:
public function down()
{
Schema::table('payments', function (Blueprint $table) {
$table->dropColumn('updated_at');
});
}