Php Laravel 5:在我的专栏中添加新值
我有现有的表和列。我的一个名为status的列的数据类型是enum('0','1'),默认值为0。现在我想在我的状态栏中添加更多值。将类似于此枚举('0'、'1'、'2'、'3'),默认值也为0 我的迁移Php Laravel 5:在我的专栏中添加新值,php,laravel-5,database-migration,Php,Laravel 5,Database Migration,我有现有的表和列。我的一个名为status的列的数据类型是enum('0','1'),默认值为0。现在我想在我的状态栏中添加更多值。将类似于此枚举('0'、'1'、'2'、'3'),默认值也为0 我的迁移 public function up() { // DB::statement("ALTER TABLE purchase_requisitions CHANGE status ENUM('0', '1', '2','3','4','5')")->
public function up()
{
//
DB::statement("ALTER TABLE purchase_requisitions CHANGE status ENUM('0', '1', '2','3','4','5')")->default('0')->comment('0 = Unproccessed 1 = Processed');
}
当我迁移这个时,出现了一个错误
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error i
n your SQL syntax; check the manual that corresponds to your MySQL server v
ersion for the right syntax to use near '('0', '1', '2','3','4','5')' at li
ne 1
更新:
Schema::table('purchase_requisitions', function (Blueprint $table) {
$table->enum('status')->default('0')->comment('0 = Unproccessed 1 = Processed')->change();
});
问题:如何使用迁移实现这一点?这里有两个问题。首先,更改枚举值的SQL不正确。应该是:
ALTER TABLE请购单修改列状态枚举(“0”、“1”、“2”、“3”、“4”、“5”)
其次,您不能将方法链接到DB::statement
的输出上,只能链接到列声明上。如果注释/默认值与之前相同,则可以不进行更新。如果没有,您可以执行以下操作:
DB::语句(“更改表请购单修改列状态枚举('0','1','2','3','4','5')默认值'0'注释'0=未处理的1=已处理');
在@atymic的帮助下,他的代码中有一些错误,但我设法修复了它。应该是这样的
Schema::table('purchase_requisitions', function (Blueprint $table) {
DB::statement("ALTER TABLE purchase_requisitions MODIFY COLUMN status ENUM('0', '1', '2','3','4','5') DEFAULT '0' COMMENT '0 = Unproccessed 1 = Processed'");
});
你的意思是这样?我会更新我的帖子。如果我理解正确,你没有添加新值?你需要更新你的
DB:statement
来运行我提供的SQL示例,我用完整的示例更新了答案。所以每次我想在特定列中添加新值时,我都必须使用MODIFY列?我有一个问题,$table->..的用途是什么?是的,很遗憾,laravel没有修改枚举列的助手。