迁移

在 Laravel 中控制数据库是使用迁移。与工匠一起创建迁移:

php artisan make:migration create_first_table --create=first_table

这将生成 CreateFirstTable 类。在 up 方法中,你可以创建列:

<?php

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

class CreateFirstTable extends Migration
{
    public function up()
    {
        Schema::create('first_table', function (Blueprint $table) {
            $table->increments('id');
            $table->string('first_string_column_name');
            $table->integer('secont_integer_column_name');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::drop('first_table');
    }
} 

最后,要运行所有迁移类,你可以运行 artisan 命令:

php artisan migrate

这将在数​​据库中创建表和列。其他有用的迁移命令是:

  • php artisan migrate:rollback - 回滚上次数据库迁移
  • php artisan migrate:reset - 回滚所有数据库迁移
  • php artisan migrate:refresh - 重置并重新运行所有迁移
  • php artisan migrate:status - 显示每次迁移的状态

修改现有表

有时,你需要更改现有的表结构,如 renaming/deleting 列。你可以通过创建新的迁移来完成此任务。并在迁移的 up 方法中完成。

//Renaming Column.

public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->renameColumn('email', 'username');
    });
}

上面的例子将 users tableemail column 重命名为 username。虽然下面的代码从 users 表中删除了一列 username

IMPROTANT:要修改列,你需要将 doctrine/dbal 依赖项添加到项目的 composer.json 文件中并运行 composer update 以反映更改。

//Droping Column
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('username');
    });
}