【Laravel】「 php artisan make:model 」コマンドのオプション解説

# `make:model` のオプションを活用する

Laravel では `php artisan make:model モデル名` をコマンド入力することで、モデルファイルを作成します。その際に、オプションを一緒に付け加えることで、モデルファイルに付随して便利な機能やファイルを同時に出力できます。

オプションは `--（2連続のハイフン）` の後にオプション名を付け加える形となっています。 また、ショートカットが用意されているオプションも存在します。

例として、以下のコマンドを打つと `seed` オプションを付け加えることとなります。

```command:seedオプション付きでモデルを作成するコマンド例
php artisan make:model model_name --seed
```

ショートカット仕様のオプションの場合は以下のようになります。

```command:seedオプション（ショートカット）付きでモデルを作成するコマンド例
php artisan make:model model_name -s
```

また、複数のオプションを組み合わせて、コマンド入力することも可能です。以下の例では、`seed` オプションと `factory` オプションを同時に入力しています。

```command:複数オプションの入力例
// seedオプション と factoryオプションを付ける
php artisan make:model model_name --seed --factory

// seedオプション と factoryオプションを付ける（ショートカット仕様）
php artisan make:model model_name -sf
```

# `make:model` で使用できる各種オプション解説

## `--all` オプション

モデルのマイグレーション、シーダ、ファクトリ、フォームリクエスト、ポリシー、及びリソース仕様のコントローラを生成します。

```terminal:コマンド例
php artisan make:model Sample -a
```

- **ショートカット**
`-a`

- **生成ファイル**
`[name].php`（モデル）
`[name]Controller.php`（コントローラ） 
`Store[name]Request.php`（フォームリクエスト）
`Update[name]Request.php`（フォームリクエスト）
`[name]Policy.php`（ポリシー）
`[name]Factory.php`（ファクトリ）
`2022_xx_xx_xxxxxx_create_[name]s_table.php`（マイグレーション）
`[name]Seeder.php`（シーダ）

## `--controller` オプション

モデルの新しいコントローラを作成します。素早く CRUD を作成したい場合等は `--resource` オプションも検討してください。

```terminal:コマンド例
php artisan make:model Sample -c
```

- **ショートカット**
`-c`

- **生成ファイル**
`[name].php`（モデル）
`[name]Controller.php`（コントローラ） 

## `--factory` オプション

モデルの新しいファクトリを作成します。

```terminal:コマンド例
php artisan make:model Sample -f
```

- **ショートカット**
`-f`

- **生成ファイル**
`[name].php`（モデル）
`[name]Factory.php`（ファクトリ）

## `--force` オプション

もし同名のモデルが存在する場合、すでに存在するモデルを上書きして、新規にモデルを作成します。以前のモデル内容は上書きされてしまうので注意してください。

- **ショートカット**
なし

- **生成ファイル**
`[name].php`（モデル）

## `--migration` オプション

モデルの新しいマイグレーションファイルを作成します。

```terminal:コマンド例
php artisan make:model Sample -m
```

- **ショートカット**
`-m`

- **生成ファイル**
`[name].php`（モデル）
`2022_xx_xx_xxxxxx_create_[name]s_table.php`（マイグレーション）

## `--policy` オプション

モデルの新しいポリシーを作成します。

- **ショートカット**
なし

- **生成ファイル**
`[name].php`（モデル）
`[name]Policy.php`（ポリシー）

## `--seed` オプション

モデルの新しいシーダを作成します。

```terminal:コマンド例
php artisan make:model Sample -s
```

- **ショートカット**
`-s`

- **生成ファイル**
`[name].php`（モデル）
`[name]Seeder.php`（シーダ）

## `--pivot` オプション

生成されたモデルをカスタム中間テーブルモデルにする必要があるかどうかを示します。

- **ショートカット**
`-p`

- **生成ファイル**
`[name].php`（ピボット）

## `--resource` オプション

生成されたコントローラをリソースコントローラにする必要があるかどうかを示します。CRUD を作成するアプリケーションに便利なオプションです。

```terminal:コマンド例
php artisan make:model Sample -r
```

- **ショートカット**
`-r`

- **生成ファイル**
`[name].php`（モデル）
`[name]Controller.php`（コントローラ） 

## `--api` オプション

生成されたコントローラを API コントローラにする必要があるかどうかを示します。

## `--requests` オプション

新しいフォームリクエストクラスを作成し、リソースコントローラで使用します。

:::note warn
注意
requests オプションを使用する際は、一緒に リソースフルなコントローラを一緒に作成してください。
【例】$ php artisan make:model Name -rR
:::

- **ショートカット**
`-R`

- **生成ファイル**
`[name].php`（モデル）
`[name]Controller.php`（コントローラ） 
`Store[name]Request.php`（フォームリクエスト）
`Update[name]Request.php`（フォームリクエスト）

## `--test` オプション

モデルに付随する PHPUnit のテストファイルを生成します。

- **ショートカット**
なし

- **生成ファイル**
`[name].php`（モデル）
`[name]Test.php`（テストファイル） 

## `--pest` オプション

モデルに付随する Pest用 のテストファイルを生成します。この「Pest」 は、PHPUnit をベースとして作成されたPHPフレームワークでシンプルな記述でテストコードを記述することができます。

- **ショートカット**
なし

- **生成ファイル**
`[name].php`（モデル）
`[name]Test.php`（テストファイル） 

## `--help` オプション

指定されたコマンドのヘルプを表示します。コマンドが指定されていない場合は、listコマンドのヘルプを表示します。

- **ショートカット**
`-h`

- **生成ファイル**
なし

## `--quiet` オプション

メッセージを出力しません。

- **ショートカット**
`-q`

- **生成ファイル**
他のオプションによる


## `--version` オプション

このアプリケーションのバージョンを表示します。

- **ショートカット**
`-V`

- **生成ファイル**
なし

## `--ansi | --no-ansi` オプション

ANSI出力を強制（または無効化）します。コマンド出力の際に、テキストに色がついたりします。

## `--no-interaction` オプション

インタラクティブな質問を表示しません。

## `--env[=ENV]` オプション

引数に指定した環境設定ファイルが存在すれば、それを読み込みます。指定したファイルがない場合は、デフォルトの `.env` ファイルを読み込もうとします。

## `-v | vv | vvv, --verbose` オプション

メッセージの詳細度を上げます、「`-v`」は通常の出力用、「`-vv`」はより詳細な出力用、「`-vvv`」はデバッグ用です。 

## 参考文献

https://readouble.com/laravel/8.x/ja/configuration.html