Laravel 5.5 数据库 - 迁移

Laravel 的数据库迁移允许团队轻松编辑和共享数据库表结构。本文介绍了如何生成迁移、迁移的结构、运行迁移(包括在生产环境中的强制运行)、回滚迁移、数据表的创建、修改和删除,以及数据列和索引的操作。通过 Schema 构建器,开发者可以方便地创建、修改和管理数据库表结构。
摘要由CSDN通过智能技术生成

简介

所谓迁移就像是数据库表结构的版本控制,这种机制允许团队轻松的编辑并共享数据库的表结构。

迁移通常和 Laravel 的 schema 构建器结合,从而可以很容易地构建应用的数据库表结构。

如果你曾经频繁告知团队成员需要手动添加字段到本地数据库的表结构以维护本地开发环境,那么这正是数据库迁移所致力于解决的问题。

Laravel 的 Schema 门面提供了与数据库系统无关的创建和操纵表的支持,在 Laravel 所支持的所有数据库系统中提供一致的、优雅的、流式的 API。

生成迁移

使用 Artisan 命令 make:migration 就可以创建一个新的迁移。

php artisan make:migration create_users_table

新的迁移位于 database/migrations 目录下,每个迁移文件名都包含时间戳,从而允许 Laravel 判断其顺序。

--table 和 --create 选项可以用于指定表名以及该迁移是否要创建一个新的数据表。这些选项只需要简单放在上述迁移命令后面并指定表名:

php artisan make:migration create_users_table --create=users

php artisan make:migration add_votes_to_users_table --table=users

如果你想要指定生成迁移的自定义输出路径,在执行 make:migration 命令时可以使用 --path 选项,提供的路径应该是相对于应用根目录的。

迁移的结构

迁移类(迁移文件)包含了两个方法:up 和 down。

up 方法用于新增表、字段或者索引到数据库。

而 down 方法就是 up 方法的逆操作,和 up 里的操作相反。

在这两个方法中,都会用到 Laravel 的 Schema 构建器。

下面是一个迁移类的示例:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('users');
    }
}

运行迁移

要运行应用中所有未执行的迁移,可以使用 Artisan 命令提供的 migrate 方法:

php artisan migrate

注:如果你正在使用 Homestead 虚拟机,需要在虚拟机中运行上面这条命令。

在生产环境中强制运行迁移

有些迁移操作是毁灭性的,这意味着它们可能造成数据的丢失,为了避免在生产环境数据库中运行这些命令,你将会在运行这些命令之前被提示并确认。想要强制运行这些命令而不被提示,可以使用 --force 标记:

php artisan migrate --force

回滚迁移

想要回滚最新的一次迁移”操作“,可以使用 rollback 命令,注意这将会回滚最后一批运行的迁移,可能包含多个迁移文件。

php artisan migrate:rollback

也可以通过 rollback 命令上提供的 step 选项来回滚指定数目的迁移。

例如,下面的命令将会回滚最后五条迁移:

php artisan migrate:rollback --step=5

migrate:reset 命令将会回滚所有的迁移。

php artisan migrate:reset

在单条命令中回滚 & 迁移

migrate:refresh 命令将会先回滚所有数据库迁移,然后运行 migrate 命令。它可以有效的重建整个数据库。

php artisan migrate:refresh

// 重建数据库并填充数据...
php artisan migrate:refresh --seed

当然,你也可以回滚或重建指定数量的迁移 —— 通过 refresh 命令提供的 step 选项,例如,下面的命令将会回滚或重建最后五条迁移:

php artisan migrate:refresh --step=5

删除所有表 & 迁移

migrate:fresh 命令会先从数据库中删除所有表然后执行 migrate 命令:

php artisan migrate:fresh

php artisan migrate:fresh --seed

数据表

创建表

使用 Schema 门面上的 create 方法来创建新的数据表。

create 方法接收两个参数,第一个是表名ÿ

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值