Php 通过DB::语句更改枚举的列

Php 通过DB::语句更改枚举的列,php,laravel,Php,Laravel,我有一个类型为enum的列,我想将其更改为varchar类型,但它会带来一个错误,即sql语法不正确,请问解决方法是什么 这是表创建迁移代码 class CreateCurrenciesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { $symbols = ['₦', '$', '£']; Schema:

我有一个类型为
enum
的列,我想将其更改为
varchar
类型,但它会带来一个错误,即sql语法不正确,请问解决方法是什么

这是表创建迁移代码

 class CreateCurrenciesTable extends Migration
{
    /**
   * Run the migrations.
   *
   * @return void
   */
 public function up()
 {
    $symbols = ['₦', '$', '£'];
    Schema::create('currencies', function (Blueprint $table) use($symbols) {
        $table->increments('id');
        $table->string('name', 50);
        $table->string('code', 5);
        $table->enum('symbol', $symbols);
        $table->timestamps();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{   
    DB::statement('SET FOREIGN_KEY_CHECKS = 0');
    Schema::dropIfExists('currencies');
    DB::statement('SET FOREIGN_KEY_CHECKS = 1');
}
这是我想用来更改列类型的迁移代码,但一直会出错

class AddSymbolToImagesTable extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::table('images', function (Blueprint $table) {
       DB::statement('ALTER TABLE images ALTER COLUMN symbol VARCHAR(200)');
       // $table->text('symbol')->change();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::table('images', function (Blueprint $table) {
       // $symbols = ['₦', '$', '£'];
       // $table->enum('symbol', $symbols)->change();
        DB::statement('ALTER TABLE images ALTER COLUMN symbol enum ');
    });
}
}

这实际上与Laravel没有任何关系,下次还应该包括错误

要更改列类型,可以使用
MODIFY
MODIFY column

因此,这将起作用:
ALTER TABLE images MODIFY symbol varchar(200)


正如您在这里的文档中所看到的那样,有一些更改列名的方法:

我认为它是
修改列
,如果它是mysql/oracle<代码>更改列用于SQLServer/MSAccess。