Laravel マイグレーションのスキーマビルダには「テーブルコメント」を設定するための関数が提供されていません。

当記事では「そこをなんとか」するための方法をご案内いたします。

やりたいこと

Laravel のマイグレーションでテーブルにコメントを入れる

環境

  • PHP 7.1 系
  • Laravel 5.5 系
  • MySQL 5.7 系

マイグレーションファイル

解決方法はとてもシンプルです。

マイグレーションファイル内でALTER 文を実行し、テーブルコメントを設定すればよいのです。

コードサンプル

public function up()
{
  Schema::create('flights', function (Blueprint $table) {
    $table->increments('id')->comment("フライトID");
    $table->string('name')->comment("フライト名");
    $table->timestamps();
  });

  // ALTER 文を実行しテーブルにコメントを設定
  DB::statement("ALTER TABLE flights COMMENT 'フライト'");
}

補足:DB::statement() とは ?

ALTER 文を実行するために DB::statement() を呼び出しています。

この関数は「任意 SQL を実行するもの」のため、色んなシーンで活用することができますね。

bool statement(string $query, array $bindings = []) Execute an SQL statement and return the boolean result.

https://laravel.com/api/5.5/Illuminate/Database/Connection.html#method_statement

まとめ

Laravel のスキーマビルダーは多機能で、美しくテーブルを定義、管理できるためとても重宝しております。

今回のケースのように、細かく見れば非対応のものも当然ありますね。 そういうものが出てきたときに与えられたものなんとかしようとしない、という気の持ち方が(視野の広さ ? 切り替えの速さ ?)が意外と大切だなーと感じます。

この記事は tomita@atuweb がお届けしました。

参考

Laravel のマイグレーションで MySQL の COMMENT を扱う http://takaya030.hatenablog.com/entry/20130926/1380209935

PHPフレームワーク Laravel入門

掌田津耶乃
出版社:秀和システム  発売日:2017-09-16

Amazonで詳細を見る

詳細! PHP 7+MySQL 入門ノート

大重 美幸
出版社:ソーテック社  発売日:2016-07-01

Amazonで詳細を見る