个性化阅读
专注于IT技术分析

Laravel生成迁移

在上一个主题中, 我们获得了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”。
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命令。

Laravel生成迁移

上面的命令在数据库中创建迁移表。

打开phpmyadmin查看迁移表。

Laravel生成迁移

上面的输出显示迁移已创建, 还有“ posts”表。

“职位”表的结构如下所示:

Laravel生成迁移

使用迁移将列添加到现有表

我想在已经创建的表中添加新列。我不想回到创建该表的文件, 删除该表, 然后重新创建该表, 然后重新迁移它。因此, 我将创建一个新的迁移文件, 将新列添加到现有表中。

以下是将列添加到现有表中的步骤:

  • 打开Git bash窗口, 然后输入以下命令:php artisan make:migration add_column_admin_is_to_table -table =“ posts”其中add_column_admin_is_to_table是迁移文件的名称, 而-table =“ posts”是告知laravel我们是与职位表一起使用。
Laravel生成迁移
  • 迁移文件在xampp / htdocs / firstproject / database / migrations目录中创建, 其中firstproject是laravel项目的名称。
Laravel生成迁移
  • 打开迁移文件, 新创建的迁移文件的结构如下所示:
<?php
use 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。
Laravel生成迁移
  • 打开phpMyAdmin以查看“帖子”表的结构。
Laravel生成迁移

在上面的输出中, 我们观察到新列即is_admin已创建, 并且整数的类型是无符号的。无符号整数表示此列不包含任何负数。

  • 如果我们想对该列进行一些修改, 那么首先, 我们需要回滚迁移。该命令是php artisan migrate:rollback。
Laravel生成迁移
  • 当我们回滚迁移时, “职位”结构的结构看起来像:
Laravel生成迁移

上面的输出显示is_admin列已从表中删除。

  • 假设我要向is_admin列提供默认值, 则可以按照以下步骤进行操作:
public function up()
    {
        Schema::table('posts', function (Blueprint $table) {
            $table->integer('is_admin')->default('0');
        });
    }
  • 要将is_admin列再次以默认值0添加到posts表中, 请运行migration命令。
Laravel生成迁移
  • 打开phpMyAdmin。
Laravel生成迁移

上面的输出显示is_admin列已添加到posts表中, 默认值为0。


赞(0)
未经允许不得转载:srcmini » Laravel生成迁移

评论 抢沙发

评论前必须登录!