是否可以通过 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();
});
16
和 4
表示总长度和小数精度,所以在这种情况下它会有范围 0.0000
的数字(点之前没有,4之后)到 000000000000.0000
(点前 12 个,点后 4 个,所以总共 16 个)。
请务必先在本地 运行 以确保不会产生不良副作用。
我正在尝试更改其中一个列的数据类型。我创建 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();
});
16
和 4
表示总长度和小数精度,所以在这种情况下它会有范围 0.0000
的数字(点之前没有,4之后)到 000000000000.0000
(点前 12 个,点后 4 个,所以总共 16 个)。
请务必先在本地 运行 以确保不会产生不良副作用。