Laravel - 如何更改列类型(smallInteger => string)

时间:2017-02-09 16:09:10

标签: laravel

文档没有说明有关使用迁移更改数据类型的信息。

我在数据库表中有这个列

$table->smallInteger('driverslicensetype')->nullable();

我正在保存四位数字,但当数字以0(零)开头时,例如0230,它将在DB中保存为230。这是错误的。

现在我想将此列数据类型从smallInteger更改为varchar。

我如何通过迁移来实现这一目标?

1 个答案:

答案 0 :(得分:1)

要使用架构更改功能,您需要Doctrine DBAL:

composer require doctrine/dbal

现在您可以使用change()

public function up()
{
    Schema::table('foo', function (Blueprint $table) {
        $table->string('driverlicensetype', 4)->nullable()->change();
    });
}

public function down()
{
    Schema::table('foo', function (Blueprint $table) {
        $table->smallInteger('driverlicensetype')->nullable()->change();
    });
}

如果您更喜欢原始方法(或者如果您的SQL更具限制性,例如driverlicensetype是外键时),请使用DB::statement

public function up()
{
    DB::statement('ALTER TABLE foo ...');
}
// ...