Laravel マイグレーションのスキーマビルダには「テーブルコメント」を設定するための関数が提供されていません。
当記事では「そこをなんとか」するための方法をご案内いたします。
やりたいこと
Laravel のマイグレーションでテーブルにコメントを入れる
環境
- PHP 7.1 系
- Laravel 5.5 系
- MySQL 5.7 系
マイグレーションファイル
解決方法はとてもシンプルです。
マイグレーションファイル内でALTER 文を実行し、テーブルコメントを設定すればよいのです。
コードサンプル
1public function up()
2{
3 Schema::create('flights', function (Blueprint $table) {
4 $table->increments('id')->comment("フライトID");
5 $table->string('name')->comment("フライト名");
6 $table->timestamps();
7 });
8
9 // ALTER 文を実行しテーブルにコメントを設定
10 DB::statement("ALTER TABLE flights COMMENT 'フライト'");
11}
補足: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 のスキーマビルダーは多機能で、美しくテーブルを定義、管理できるためとても重宝しております。
今回のケースのように、細かく見れば非対応のものも当然ありますね。 そういうものが出てきたときに与えられたものなんとかしようとしない、という気の持ち方が(視野の広さ ? 切り替えの速さ ?)が意外と大切だなーと感じます。
参考
Laravel のマイグレーションで MySQL の COMMENT を扱う http://takaya030.hatenablog.com/entry/20130926/1380209935