📅  最后修改于: 2021-01-05 10:48:21             🧑  作者: Mango
在上一个主题中,我们获得了laravel项目中已经可用的迁移知识。现在,我们将学习如何生成自己的迁移。
以下是生成迁移的步骤:
上面的输出显示已使用名称“ create_posts_table ”创建了迁移表。 ' -create =“ posts ”'是创建名称为“ posts ”的表的标志。我们遵循与laravel使用默认迁移表相同的规则来命名迁移表。
上面的输出显示名称为“ 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 ”表。
“ posts ”表的结构如下所示:
使用迁移将列添加到现有表
我想在已经创建的表中添加新列。我不想回到创建该表的文件,删除该表,然后重新创建该表,然后重新迁移它。因此,我将创建一个新的迁移文件,将新列添加到现有表中。
以下是将列添加到现有表中的步骤:
public function up()
{
Schema::table('posts', function (Blueprint $table) {
$table->integer('is_admin')->unsigned();
});
}
上面的代码显示我们正在将新列即is_admin添加到posts表。
在上面的输出中,我们观察到创建了新列,即is_admin ,并且整数的类型是无符号的。无符号整数表示此列不包含任何负数。
上面的输出显示is_admin列已从表中删除。
public function up()
{
Schema::table('posts', function (Blueprint $table) {
$table->integer('is_admin')->default('0');
});
}
上面的输出显示is_admin列已添加到posts表中,默认值为0。