laravel

Laravel8でモデルファイルとマイグレーションファイルを同時作成する方法

2021年8月2日

データアナリスト

 

あなた
Laravel8でモデルファイルとマイグレーションファイルを同時に作成する方法ってありますか?

 

今回はこんな疑問に答えていきます。

 

【前提】

・laravel8

・モデルとマイグレーションについては理解できている

参考:公式ドキュメント

 

Laravel8でモデルファイルとマイグレーションファイルを同時作成する方法

 

結論から話すと、以下のコマンドを叩けばOKです。

 

php artisan make:model モデル名 -m

 

このコマンドを叩いて

Model created successfully.

Created Migration:

というような文言がターミナルで表示されれば成功です。

 

作成されるモデルファイルの場所

 

laravel8から、作成されるModelの場所は「app/models」になっています。

 

作成されるマイグレーションファイルの場所

 

「databes/migrations」の中に入っています。

実際にマイグレーションを実行する時は

 

php artisan migrate

 

上記のコマンドを実行します。

 

マイグレーションファイルの中身の書き方

 

補足的に、マイグレーションファイルの中身の書き方を簡単に紹介します。

 

必要メソッドはup()とdown()

 

必要なメソッドはup()とdown()です。

 

・up() → テーブル情報の入力やインデックス作成

・down() → テーブル削除やインデックス削除

 

「作成時にもdown()は必要なの?」と思うかもですが、必要です。

なぜなら、作成時のマイグレーションを取り消したい時に使うからです。

 

実際のコードの中身は以下のようになります。

 

/**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        //テーブル作成やインデックス作成
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //テーブル削除やインデックス削除
    }

 

テーブルの作成記述、削除記述と、インデックスの作成記述と削除記述を紹介します。

 

テーブル作成、削除

 

テーブル作成、削除の記述は以下のような感じです。

 

/**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('テーブル名', function (Blueprint $table) {
            $table->カラム名()->制約()
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('テーブル名');
    }

 

カラムごとの細かい記述方法などについては、公式ドキュメントに記載されていますので、チェックしてみてください。

 

インデックス追加、削除

 

インデックスとの追加と削除は以下のような感じです。

複合インデックスの場合は、配列でカラムを渡してあげれば良いです。

 

/**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('テーブル名', function (Blueprint $table) {
            $table->index(['カラム1', 'カラム2', 'カラム3'],
'インデックス名');
        });
    }

     /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('テーブル名', function (Blueprint $table) {
            $table->dropIndex('インデックス名'); 
        });
    }

 

ちなみに、インデックスやテーブルの削除をしたい場合(変更を巻き戻したい場合)は以下のコマンドを実行すればOKです。

 

php artisan migrate:rollback

 

今回は以上です。

ありがとうございました。

 

-laravel

© 2021 エンジニアてんし君ブログ