[英]Laravel: Add column to table with updated migration
我正在尝试迁移一个迁移文件中的特定行。
例子:
前:
Schema::create('categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('category_name');
$table->integer('parent_id')->nullable();
$table->timestamps();
});
后:
Schema::create('categories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('category_name');
$table->string('img_url'); // ← new column
$table->integer('parent_id')->nullable();
$table->timestamps();
});
现在我只想迁移这一行: $table->string('img_url');
可能吗?
听起来您正在尝试向已通过迁移创建的表添加列。 如果是这种情况,您需要使用Schema::table(...)
而不是使用Schema::create(...)
...) 。
通常,您会为此创建一个新的迁移:
$ php artisan make:migration add_img_url_to_categories
这将在/database/migrations
上创建一个名为2019_10_21_165554_add_img_url_to_categories.php
的新文件。 然后将此代码添加到up()
function 中:
public function up()
{
Schema::table('categories', function (Blueprint $table) {
$table->string('img_url');
});
}
您拥有的另一个选择是完全按照您所做的那样编辑迁移(根据您问题中的代码),然后运行:
$ php artisan migrate:fresh // drop all tables and re-run all migrations
或者
$ php artisan migrate:refresh // reset and re-run all migrations
但请记住,这些都是破坏性操作——这意味着您将丢失数据库中已有的任何数据。 在早期开发中,这可能无关紧要。 但是您应该真正养成为数据库更改创建新迁移的习惯,而不是编辑现有迁移。
迁移的目的是让您(或使用您的应用程序的任何人)可以快速部署与您的应用程序期望的架构匹配的数据库。 在开发过程中,当您调整数据库架构以适应您正在开发的功能时,编辑迁移并不少见。
但是,一旦您部署或发布了您的应用程序,您应该考虑将所有迁移都锁定或只读。 从那时起的任何数据库更改都应在新的迁移中完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.