如何正确更改/更新我的迁移,我使用的是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
但它没有改变。
答案 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
提交更改。