我有数据类型为balance
的列double
,但是我想更改它以适当的方式存储价格。我要设为decimal
。
为此,我正在尝试遵循
public function up()
{
Schema::table('billing', function (Blueprint $table) {
//
$table->decimal('balance', 8, 2)->change();
});
}
但是我对down函数感到困惑,是否应该还原它,我的意思是先前的数据类型?
有人可以帮我指导一下吗,我将非常感谢。谢谢
答案 0 :(得分:4)
您无需为用于更改列的up函数定义drop函数。
因为drop()
旨在删除表,并且可能会级联操作。
并且您的初始billing
迁移文件应该已经具有删除该表的删除定义。
因此,您可以安全地将新迁移文件中的down()
函数保留为空
答案 1 :(得分:2)
down方法的目的是将更改恢复到运行迁移的up方法之前完全相同的状态。如果要在up()中更改任何用户类型,则理想情况下应该在down()中将其反转。您的迁移将像这样结束:
public function up()
{
//double to decimal
}
public function down()
{
//decimal to double
}
答案 2 :(得分:1)
down()
。假设您已经将新更改迁移到数据库,并且没有为down()
写任何内容。在这种情况下,无论您进行回滚,都将使用decimal
来更改新的列。如果您编写的代码再次将decimal
还原为double
,则在回滚时不会受到伤害。它将保持迁移之前的状态。
答案 3 :(得分:0)
我通常是这样想的。
如果此迁移阻止以前的迁移能够回滚,则需要使用.get()
进行还原。
例如,如果我在两个现有表之间创建了新约束,那么如果不还原约束创建,则无法成功删除该约束。我需要还原它。
对于您而言,更改列的类型不会在某种程度上影响回滚。因此,您无需还原它。