人気のPHP WEBアプリケーションフレームワークLaravelのTipsを記録していきます

● LaravelのマイグレーションでDBカラムにインデックスを追加する

● LaravelのマイグレーションでDBカラムにインデックスを追加する

マイグレーションファイル名はなんでもいいですが、クラス名(1番目の引数)が被ってしまうとエラーになるので、注意して命名してください。

php artisan make:migration change_catalogs_add_title_index  --table=catalogs

クラス名(class ChangeConsentformsDelBiko extends Migration)でファイルが作成されます。

成功すると 次のようなファイルが生成されます

2019_09_28_180737_change_catalogs_add_title_index

このファイルを次のように記述します。

    public function up()
    {
        Schema::table('consentforms', function (Blueprint $table) {
            $table->index('title'); // この行を追加
        });
    }

    public function down()
    {
        Schema::table('consentforms', function (Blueprint $table) {
            $table->dropIndex(['title']); // この行を追加(配列で渡す)
        });
    }

マイグレーションの実行

php artisan migrate

実行するとインデックス catalogs_title_index が作成されます。

● Laravelのマイグレーションで MySQLの TEXT型のカラムにインデックスを作成する

MySQLのTEXT型の場合はインデックスのサイズを指定する必要があります。(最大255 bytes)

テーブル : artists
カラム : yomi_name
の場合

        Schema::table('artists', function (Blueprint $table) {
            DB::statement('CREATE INDEX artists_yomi_name_index ON artists (yomi_name(100));');
        });

とします。

No.1590
05/15 10:29

edit