Laravel 4.2 迁移 - 在不删除列的情况下更改小数精度和比例

标签 laravel database-migration

我希望提高小数列的小数精度和小数位数。

我知道我可以删除该列,然后重新创建它,但这样做将意味着丢失该列中的数据。

有没有一种方法可以使用 Laravel Schema::table 来改变列的精度和比例而不删除它?

例如类似于:

Schema::table('prices', function(Blueprint $t) {
    $t->buy_price->decimal(5,2);
});

最佳答案

这对我有用:

public function up()
{
    Schema::table('prices', function(Blueprint $t) {
        $t->decimal('buy_price', 5, 2)->change();
    });
}

回滚时使用原始精度值 3, 1 代替

public function down()
{
    Schema::table('prices', function(Blueprint $t) {
        $t->decimal('buy_price', 3, 1)->change();
    });
}

我避免使用特定于数据库的“原始”语句,因为当我更改为另一个 DBMS 引擎时它们可能会失败。所以我让 Laravel 在使用 DB 时处理必要的语法

关于Laravel 4.2 迁移 - 在不删除列的情况下更改小数精度和比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24215570/

相关文章:

javascript - 如何将原始文本结构(如空格或行位置)维护到数据库中并将其显示回来?

mysql - 将 MSSQL 转换为 MySQL

node.js - 在 Node/ExpressJs 中类似的 Rails ActiveRecord 迁移

git - 在git中如何找出在特定标签后添加了哪些文件?

php - Laravel 5.7 - 如何动态触发用户验证电子邮件?

php - 在单元测试 Laravel 期间保存变量

laravel - 如何在 Backpack for Laravel 中添加 ListEntries 表的默认排序?

Laravel - Eloquent 连接

docker - 如何使用elixir phoenix版本和指南中的示例MyApp.Release.rollback在Docker容器中回滚数据库

python - 为什么 Django 迁移在不使用时在非默认数据库上创建表?