是否可以通过 Laravel 迁移将列的数据类型从 int 更改为 double 而不会丢失数据

Is it possible to change the datatype of a column from int to double without losing data with Laravel migration

我正在尝试更改其中一个列的数据类型。我创建 table 的迁移是:

public function up()
    {
        Schema::create('place_ratings', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('places_id');
            $table->foreign('places_id')->references('id')->on('places');
            $table->integer('rating');
            $table->mediumText('comments');
            $table->timestamps();
        });
    }

我想将评分 table 的数据类型从 integer 更改为 float。我的 table 中已有一些数据,我不想丢失它们。那么,我该怎么做呢?

您应该能够使用简单的迁移更改该列,请参阅 https://laravel.com/docs/5.8/migrations#modifying-columns 了解更多信息:

您需要先安装 composer require doctrine/dbal 才能生成更改这些列的 sql。

Schema::table('place_ratings', function (Blueprint $table) {
    $table->decimal('rating', 16, 4)->change();
});

164 表示总长度和小数精度,所以在这种情况下它会有范围 0.0000 的数字(点之前没有,4之后)到 000000000000.0000(点前 12 个,点后 4 个,所以总共 16 个)。

请务必先在本地 运行 以确保不会产生不良副作用。