遷移

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