Laravel Migration(カラム属性変更)

概要

Laravelでカラムに属性を変更したい時のマイグレーション

参考

Laravel 5.6 データベース:マイグレーション

ファイル生成コマンド

$ php artisan make:migration ファイル名(create_users_table) オプション(--create=users)
  • オプション
    • 生成するテーブル名を宣言(--create)。
    • 変更を加えるテーブルを宣言(--table)。
    • ファイルのパスを指定(--path)。

ファイルの構造

upとdownの二種類のメソッドがある。

  • up
    • 新しいテーブル、カラム、インデックスをdbに追加するために使用する(カラム属性の変更もupメソッド)。
  • down
    • upが行った操作を元に戻す。

実行

$ php artisan migrate

カラム変更

laravelはデフォルトではカラムの変更を行うことができない。composerでdoctrine/dbalを追加する必要がある。

$ composer require doctrine/dbal

無いと下のエラーが出る。上のコマンドはappのホームディレクトリで実行する。

[RuntimeException]                                                                   
  Changing columns for table "books" requires Doctrine DBAL; install "doctrine/dbal".  

カラムの属性変更

$ php artisan make:migration change_books_table --table books
<?php

public function up()
{
    Schema::table('books', function (Blueprint $table) {
        $table->datetime('published')->change();
    });
}

確認

mysql> desc books;