Migration - iruma-tea/laravel-base-11 GitHub Wiki
- 書籍のカテゴリ情報を扱うカテゴリテーブルのマイグレーションファイルの作成
php artisan make:migration create_categories_table --create=categories
- 書籍テーブルのマイグレーションファイルの作成
php artisan make:migration create_books_table --create=books
- 下記2つのマイグレーションファイルが作成される
- database/migrations/(作成日時)_create_categories_table.php
- database/migrations/(作成日時)_create_books_table.php
名前 | 型 | 制約など |
---|---|---|
id | BIGINT UNSIGNED | AUTO_INCREMENT(自動採番)、主キー |
title | VARCHAR(100) | NOT NULL |
created_at | TIMESTAMP | NOT NULL |
updated_at | TIMESTAMP | NOT NULL |
名前 | 型 | 制約など |
---|---|---|
id | BIGINT UNSIGNED | AUTO_INCREMENT(自動採番)、主キー |
title | VARCHAR(100) | NOT NULL |
author | VACHAR(50) | NOT NULL |
price | INT | NOT NULL |
category_id | INT | NOT NULL, FOREIGN KEY(categories_id) |
created_at | TIMESTAMP | NOT NULL |
updated_at | TIMESTAMP | NOT NULL |
メソッド | 説明 | 制約など |
---|---|---|
$table->id() | BIGINT UNSIGNED型のid列を作成する | PRIMARY KEY, AUTO_INCREMENT |
$table->integer('name') | INT型のname列を作成する | NOT NULL |
$table->float('name', 3, 2) | 実数型(整数部3桁、小数部2桁)のname列を作成する | NOT NULL |
$table->foreignId('name_id')->constrained() | BIGINT UNSIGNED型のname_id列を作成する | FOREING KEY, NOT NULL |
$table->boolean('name') | BOOLEAN型のname列を作成する | NOT NULL |
$table->string('name', 100) | VARCHAR(100)型のname列を作成する | NOT NULL |
$table->date('name') | DATE型のname列を作成する | NOT NULL |
$table->timestamp('name') | TIMESTAMP型のname列を作成する | NOT NULL |
$table->timestamp() | TIMESTAMP型のcreated_at列、update_at列を作成する |
メソッド | 説明 |
---|---|
index() | インデックスを作成する |
nullable | NULLを許可する |
default(value) | 引数に指定した値をデフォルト値にする |
unique() | ユニーク制約を付与する |
メソッド | 説明 |
---|---|
$table->dropColumn('name') | name列を削除する |
$table->renameColumn('a', 'b') | a列をb列に変更する |
$table->string('name', 10) | VARCHAR(10)型のname列を追加する |
$table->string('name', 10)->change() | name列のサイズを10に変更する |
$table->string('name', 10)->nullable()->change() | name列のサイズを10に変更後、NULLの登録を許容する |
マイグレーションの実行コマンドの一覧
コマンド | 内容 |
---|---|
php artisan migrate | マイグレーションを実行する |
php artisan migrate:rollback | 最後に実行したマイグレーションをロールバック |
php artisan migrate:rollback --step=5 | 過去5回分のマイグレーションをロールバック |
php artisan migrate:reset | すべてのマイグレーションをロールバック |
php artisan migrate:refresh | すべてのマイグレーションをロールバックした上で、再度マイグレーションを実行 |
php artisan migrate:refresh --seed | すべてのマイグレーションをロールバックした上で、再度マイグレーションを実行(シードを投入) |
- 書籍テーブルの著者列を削除する
- 仕様変更などで書籍テーブルの定義を変更する場合、新しくマイグレーションファイルを作成する。
php artisan make:migration drop_column_author_from_books_table --table=books
- 仕様変更などで書籍テーブルの定義を変更する場合、新しくマイグレーションファイルを作成する。
- 著者テーブル、著者詳細テーブルを作成する
php artisan make:migration create_authors_table --create=authors
php artisan make:migration create_author_details_table --create=author_details
- 著者書籍テーブルを作成する
php artisan make:migration create_author_book_table --create=author_book
名前 | 型 | 制約など |
---|---|---|
id | BIGINT UNSIGNED | AUTO_INCREMENT(自動採番)、主キー |
name | VARCHAR(50) | NOT NULL, INDEX |
created_at | TIMESTAMP | NOT NULL |
updated_at | TIMESTAMP | NOT nULL |
名前 | 型 | 制約など |
---|---|---|
author_id | BIGINT UNSIGNED | NOT NULL, FOREIGN KEY(authors.id), 主キー |
VACHAR(100) | UNIQUE | |
address | VACHAR(100) | |
created_at | TIMESTAMP | NOT NULL |
updated_at | TIMESTAMP | NOT NULL |
名前 | 型 | 制約など |
---|---|---|
book_id | BIGINT UNSIGNED | NOT NULL, FOREIGN KEY(books.id), 複合主キー |
author_id | BIGINT UNSIGNED | NOT NULL, FOREIGN KEY(authors.id), 複合主キー |
created_at | TIMESTAMP | NOT NULL |
updated_at | TIMESTAMP | NOT nULL |