传送门:Laravel 的数据库迁移 Migrations

简介

数据库迁移就像是数据库的版本控制,可以让你的团队轻松修改并共享应用程序的数据库结构。

如果你曾经试过让同事手动在数据库结构中添加字段,那么数据库迁移可以让你不再需要做这样的事情。不仅如此,

Migration 建表要比直接手动创建表或者.sql文件具备额外的管理数据库的功能,如回滚、重置、更新等。Migration 的建表方法大部分情况下能兼容 MySQL, PostgreSQL, SQLite 甚至是 Oracle 等主流数据库系统。

默认迁移文件

所有创建的迁移文件都被统一放在database/migrations文件夹里。打开该文件夹我们可以看到,Laravel 已默认为我们创建好了两个迁移文件:

  • database/migrations/2014_10_12_000000_create_users_table.php
  • database/migrations/2014_10_12_100000_create_password_resets_table.php

Laravel 默认创建的两个迁移文件,一个用于构建用户表,一个用于构建密码重置表。

本章我们先来看下 Laravel 为我们生成的创建用户迁移文件里面都包含了什么内容。

database/migrations/2014_10_12_000000_create_users_table.php

<?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');
    }
}

可以看到在该文件里面定义了一个CreateUsersTable类,并继承自Migration基类。CreateUsersTable 有两个方法updown

  • 当我们运行迁移时,up方法会被调用;
  • 当我们回滚迁移时,down方法会被调用。

创建数据库表

up方法里面,我们通过调用Schema类的create方法来创建users表:

Schema::create('users', function (Blueprint $table) {
    ...
});

create方法会接收两个参数:一个是数据表的名称,另一个则是接收$table(Blueprint 实例)的闭包。

定义数据表字段

接下来让我们来详细讲解 Blueprint 实例$table的基本用法:

// 由 increments 方法创建了一个 integer 类型的自增长 id。
$table->increments('id');

// 由 string 方法创建了一个 name 字段,用于保存用户名称。
$table->string('name');

// 由 string 方法创建了一个 email 字段,且在最后指定该字段的值为唯一值,用于保存用户邮箱。
$table->string('email')->unique();

// 由 string 方法创建了一个 password 字段,且在 string 方法中指定保存的值最大长度为 60,用于保存用户密码。
$table->string('password', 60);

// 由 rememberToken 方法为用户创建一个 remember_token 字段,用于保存『记住我』的相关信息。
$table->rememberToken();

// 由 timestamps 方法创建了一个 created_at 和一个 updated_at 字段,分别用于保存用户的创建时间和更新时间。
$table->timestamps();

若要了解更多 $table 的可用方法,可查阅官方文档

数据库迁移

第一步:确保你的环境开启了数据库服务并且正常。本节以mysql为例,环境为mac ox,数据库管理工具为:Sequel Pro ,环境安装参考 《第零章:环境安装 - Mac OS 安装MySql》

第二步:在项目 /config/database.php 中配置好你的数据库参数。

'mysql' => [
            'driver' => 'mysql',
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'sample'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', '202063'),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'strict' => true,
            'engine' => null,
]

第三步:手动创建一个名为sample的数据库

第四步:执行 $ php artisan migrate

results matching ""

    No results matching ""