今回はこんな疑問に答えていきます。
【前提】
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
今回は以上です。
ありがとうございました。