在上一个主题中, 我们获得了laravel项目中已经可用的迁移知识。现在, 我们将学习如何生成自己的迁移。
生成迁移的步骤
以下是生成迁移的步骤:
- 打开Git bash窗口, 然后键入以下命令:’ php artisan make:migration create_posts_table– create =“ posts”
文章图片
【Laravel生成迁移】上面的输出显示已使用名称“ create_posts_table”创建了迁移表。 ‘ -create =“ posts”’ 是创建名称为“ posts”的表的标志。我们遵循与laravel使用默认迁移表相同的规则来命名迁移表。
- 要查看迁移表, 请打开目录“ C:\ xampp \ htdocs \ firstprojectproject \ database \ migrations”。
文章图片
上面的输出显示名称为“ create_posts_table”的迁移表已成功创建。
- 打开迁移文件, 该文件的结构如下:
class CreatePostsTable extends Migration{/*** Run the migrations.** @return void*/public function up(){Schema::create('posts', function (Blueprint $table) {$table->
bigIncrements('id');
$table->
timestamps();
});
}/*** Reverse the migrations.** @return void*/public function down(){Schema::dropIfExists('posts');
}}
上面的代码是新生成的类, 包含两个方法, 即up()方法和down()方法。 up()方法实现create()方法, 该方法包含两个参数, 即表名(posts)和闭包函数。闭包函数包含Blueprint类, 并将其对象$ table作为参数。这两个列是由Laravel创建的;第一列是名称为“ id”的自动递增列, 第二列是timestamp类型。
假设我在下面的代码中添加了另外两列:
public function up(){Schema::create('posts', function (Blueprint $table) {$table->
bigIncrements('id');
$table->
string('title')->
unique();
$table->
text('body');
$table->
timestamps();
});
}
现在, 我们将进行迁移以运行上面的代码。打开Git bash窗口以运行migration命令。
文章图片
上面的命令在数据库中创建迁移表。
打开phpmyadmin查看迁移表。
文章图片
上面的输出显示迁移已创建, 还有“ posts”表。
“职位”表的结构如下所示:
文章图片
使用迁移将列添加到现有表
我想在已经创建的表中添加新列。我不想回到创建该表的文件, 删除该表, 然后重新创建该表, 然后重新迁移它。因此, 我将创建一个新的迁移文件, 将新列添加到现有表中。
以下是将列添加到现有表中的步骤:
- 打开Git bash窗口, 然后输入以下命令:php artisan make:migration add_column_admin_is_to_table -table =“ posts”其中add_column_admin_is_to_table是迁移文件的名称, 而-table =“ posts”是告知laravel我们是与职位表一起使用。
文章图片
- 迁移文件在xampp / htdocs / firstproject / database / migrations目录中创建, 其中firstproject是laravel项目的名称。
文章图片
- 打开迁移文件, 新创建的迁移文件的结构如下所示:
<
?phpuse Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddColumnAdminIsToTable extends Migration{/*** Run the migrations.** @return void*/public function up(){Schema::table('posts', function (Blueprint $table) {//});
}/*** Reverse the migrations.** @return void*/public function down(){Schema::table('posts', function (Blueprint $table) {//});
}}
- 我们在up()方法中添加以下代码:
public function up(){Schema::table('posts', function (Blueprint $table) {$table->
integer('is_admin')->
unsigned();
});
}
上面的代码显示我们正在将新列即is_admin添加到posts表。
- 在Git bash窗口中输入migration命令, 即php artisan migration。
文章图片
- 打开phpMyAdmin以查看“帖子”表的结构。
文章图片
在上面的输出中, 我们观察到新列即is_admin已创建, 并且整数的类型是无符号的。无符号整数表示此列不包含任何负数。
- 如果我们想对该列进行一些修改, 那么首先, 我们需要回滚迁移。该命令是php artisan migrate:rollback。
文章图片
- 当我们回滚迁移时, “职位”结构的结构看起来像:
文章图片
上面的输出显示is_admin列已从表中删除。
- 假设我要向is_admin列提供默认值, 则可以按照以下步骤进行操作:
public function up(){Schema::table('posts', function (Blueprint $table) {$table->
integer('is_admin')->
default('0');
});
}
- 要将is_admin列再次以默认值0添加到posts表中, 请运行migration命令。
文章图片
- 打开phpMyAdmin。
文章图片
上面的输出显示is_admin列已添加到posts表中, 默认值为0。
推荐阅读
- Git安装详细步骤
- Laravel表单
- Laravel文件上传
- Laravel CRUD操作全解
- Laravel数据库
- Laravel Blade模板
- 什么是控制器()
- Laravel控制器中间件
- Laravel Composer安装详细教程