Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5:在我的专栏中添加新值_Php_Laravel 5_Database Migration - Fatal编程技术网

Php Laravel 5:在我的专栏中添加新值

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')")->

我有现有的表和列。我的一个名为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')")->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没有修改枚举列的助手。