Laravel Migrations更改/更新

时间:2016-05-04 08:30:16

标签: laravel laravel-5 migration laravel-5.1

如何正确更改/更新我的迁移,我使用的是Laravel 5.1。

文档说我应该使用更改来更新列,例如:

$table->string('color', 10)->change();

但是我必须在迁移中使用哪些命令来更新一个简单的php工匠迁移?

到目前为止我试过这个:

public function up()
{
   Schema::create('products', function (Blueprint $table)) {
        $table->string('color', 5);
   });

   Schema::table('products', function (Blueprint $table)) {
        $table->string('color', 10)->change();
   });
}

并使用此命令:

php artisan migrate

但它没有改变。

3 个答案:

答案 0 :(得分:3)

首先,创建新的迁移以更改现有的表列。

然后,您应该在新迁移中使用up()方法执行此操作:

Schema::table('products', function (Blueprint $table)) {
    $table->string('color', 10)->change();
});

因此,您将进行两次迁移。首先确实创建了products表,其中color字符串的长度不正确。

第二次迁移会将color字符串长度从5更改为10.

创建秒迁移后,再次运行php artisan migrate,更改将应用​​于表。

答案 1 :(得分:2)

您可以使用php artisan migrate:refresh重新创建表(在编辑原始迁移之后)。

当心,它将删除您的表!不过,对于快速修复新安装很有用

答案 2 :(得分:1)

只是想到我总结了我为实现这一点所做的工作,详细阐述了上述答案。

php artisan make:migration change_yourcolumn_to_float_in_yourtable

然后,在该迁移内部,在up()方法中,我添加了以下内容:

Schema::table('yourtable', function (Blueprint $table) {
    $table->float('yourcolumn')->change();  // Changing from int to float, ie.
});

然后你可能需要添加一个包来进行数据库修改,如下所示: 进入控制台:composer require doctrine/dbal

然后你可以继续php artisan migrate提交更改。