Schema Builder

Laravel 提供 Schema 類別來操作資料表。通常會用在 migration 檔案中。

建立資料表

Schema::create('posts', function($table) {
    $table->increments('id');
    $table->string('title');
    $table->string('content');
    $table->timestamps();
});

等效 SQL:

CREATE TABLE `posts` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `title` varchar(255) NOT NULL DEFAULT '',
    `content` varchar(255)  NOT NULL DEFAULT '',
    `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
    `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
    PRIMARY KEY (`id`)
)

資料表重新命名

Schema::rename($from, $to);

範例:

Schema::rename('posts', 'articles');

等效 SQL:

ALTER TABLE `posts`
RENAME TO `articles`;

刪除資料表

Schema::drop('posts');

Schema::dropIfExists('posts');

等效 SQL:

DROP TABLE `posts`;

新增欄位

Schema::table('posts', function($table)
{
    $table->string('tag');
});

string 會被轉換成 varchar(255)。

等效 SQL:

ALTER TABLE `posts`
ADD `tag` varchar(255);

各種指令所代表的資料型態的列表:

註:因為各家資料庫的資料型態略有不同,Schema 指令會自動轉換成符合該資料庫所使用的資料型態。

刪除欄位

Schema::table('posts', function($table)
{
    $table->dropColumn('tag');
});

等效 SQL:

ALTER TABLE `posts`
DROP COLUMN `tag`;

欄位重新命名

Schema::table('posts', function($table)
{
    $table->renameColumn('from', 'to');
});

等效 SQL:

ALTER TABLE `posts`
RENAME COLUMN `from` to `to`;

Last updated