Laravel11にあるmake:xxxコマンドを全部調べた
はじめに
Laravel11にはmake:xxxコマンドがたくさんあるが、
使った事があるやつは少ないので1つ1つどんなmake:xxxコマンドなのか調べた。
環境
- Laravel 11.0.8
Laravel11で増えたmake:xxxコマンド
make:cache-table
cacheテーブルを作成するマイグレーションファイルを生成する。
php artisan make:cache-table
実行するとdatabase/migrations配下にY_m_d_His_create_cache_table.phpファイル作られる。
すでにY_m_d_His_create_cache_table.phpファイルがあると作成できないです。
make:class
クラスを作成する。
php artisan make:class クラス名
実行するとapp配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-i--invokable
|
シングルクラスを作成 |
-f--force
|
すでにファイルが存在しても上書きして作成 |
-
--invokableを指定すると__invokeメソッドが定義したクラスを作成できる
make:enum
列挙型(Enum)を作成する。
php artisan make:enum 列挙型(Enum)名
実行するとapp配下に列挙型(Enum)が作られる。
事前にapp/Enums、もしくは、app/Enumerationsのどちらかのディレクトリを作っておくと作成先が変わる。
両方あるとapp/Enumsが優先される。
| オプション | 説明 |
|---|---|
-s--string
|
string型の列挙型(Backed Enum)を作成 |
-i--int
|
int型の列挙型(Backed Enum)を作成 |
-f--force
|
すでにファイルが存在しても上書きして作成 |
make:interface
インターフェイスを作成する。
php artisan make:interface インターフェイス名
実行するとapp配下にインターフェイスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
make:job-middleware
ジョブミドルウェアクラスを作成する。
php artisan make:job-middleware ジョブミドルウェアクラス名
実行するとapp/Jobs/Middleware配下にジョブミドルウェアクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成 |
-
--test、--pest、--phpunitを指定するとtests/Feature/Jobs/Middleware配下にテストが作られる
make:notifications-table
notificationsテーブルを作成するマイグレーションファイルを生成する。
php artisan make:notifications-table
実行するとdatabase/migrations配下にY_m_d_His_create_notifications_table.phpファイル作られる。
すでにY_m_d_His_create_notifications_table.phpファイルがあると作成できないです。
make:queue-batches-table
job_batchesテーブルを作成するマイグレーションファイルを生成する。
テーブル名はconfig/queue.phpのbatching.tableの値から取得する。(空の場合は、job_batchesになる)
php artisan make:queue-batches-table
実行するとdatabase/migrations配下にY_m_d_His_create_job_batches_table.phpファイル作られる。
テーブル名をjob_batchesから別の名前にしている場合は作成されるファイル名も変わる。
すでに0001_01_01_000002_create_jobs_table.phpもしくはY_m_d_His_create_job_batches_table.phpファイルがあると作成できないです。
テーブル名をjob_batchesから別の名前にしている場合はチェックするファイルも変わる。
make:queue-failed-table
failed_jobsテーブルを作成するマイグレーションファイルを生成する。
テーブル名はconfig/queue.phpのfailed.tableの値から取得する。(変更していなければfailed_jobsになる)
php artisan make:queue-failed-table
実行するとdatabase/migrations配下にY_m_d_His_create_failed_jobs_table.phpファイル作られる。
テーブル名をfailed_jobsから別の名前にしている場合は作成されるファイル名も変わる。
すでに0001_01_01_000002_create_jobs_table.phpもしくはY_m_d_His_create_failed_jobs_table.phpファイルがあると作成できないです。
テーブル名をfailed_jobsから別の名前にしている場合はチェックするファイルも変わる。
make:queue-table
jobsテーブルを作成するマイグレーションファイルを生成する。
テーブル名はconfig/queue.phpのconnections.database.tableの値から取得する。(変更していなければjobsになる)
php artisan make:queue-table
実行するとdatabase/migrations配下にY_m_d_His_create_jobs_table.phpファイル作られる。
テーブル名をjobsから別の名前にしている場合は作成されるファイル名も変わる。
すでに0001_01_01_000002_create_jobs_table.phpもしくはY_m_d_His_create_jobs_table.phpファイルがあると作成できないです。
テーブル名をjobsから別の名前にしている場合はチェックするファイルも変わる。
make:session-table
sessionsテーブルを作成するマイグレーションファイルを生成する。
php artisan make:session-table
実行するとdatabase/migrations配下にY_m_d_His_create_sessions_table.phpファイル作られる。
すでに0001_01_01_000000_create_users_table.phpもしくはY_m_d_His_create_sessions_table.phpファイルがあると作成できないです。
make:trait
トレイトを作成する。
php artisan make:trait トレイト名
実行するとapp配下にトレイトが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
Laravel11以前から存在するmake:xxxコマンド
Laravel11で変わった部分もいくつかあります。
make:cast
キャストクラスを作成する。
php artisan make:cast クラス名
実行するとapp/Casts配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
--inbound |
読み取り専用のキャストクラスを作成 |
make:channel
チャンネルクラスを作成する。
php artisan make:channel クラス名
実行するとapp/Broadcasting配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
make:command
コンソールコマンドクラスを作成する。
php artisan make:command クラス名
実行するとapp/Console/Commands配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
--command[=COMMAND] |
$signatureプロパティの値を設定 |
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
- コマンドはハイフン区切りが推奨かもしれないです
php artisan make:command クラス名 --command=hoge-hoge
-
--commandが未指定だと、app:のあとにクラス名をハイフン区切りに変換して設定されます- 例:SendMail -> app:send-mail
-
--test、--pest、--phpunitを指定するとtests/Feature/Console/Commands配下にテストが作られる
make:component
クラスベースのコンポーネントを作成する。
php artisan make:component クラス名
実行するとapp/View/Components配下にクラス、resources/views/components配下にBladeテンプレートが作られる。
また、サブディレクトリに作る場合は次のように指定する。
php artisan make:component ディレクトリ名/クラス名
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
--inline |
インラインビューを生成するコンポーネントクラスを作成 |
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
- Bladeテンプレートのみでサブディレクトリに作る場合は次のように指定する
php artisan make:component ディレクトリ名.ファイル名 --view
-
--test、--pest、--phpunitを指定するとtests/Feature/View/Components配下にテストが作られる
make:controller
コントローラクラスを作成する。
php artisan make:controller クラス名
実行するとapp/Http/Controllers配下にクラスが作られる。
| オプション | 説明 |
|---|---|
--api |
APIリソースコントローラを作成 |
--type=TYPE |
作成するコントローラの種類を指定 |
--force |
すでにファイルが存在しても上書きして作成 |
-i--invokable
|
シングルアクションコントローラを作成 |
-m--model[=MODEL]
|
ルートモデル結合を使用してリソースコントローラを作成 |
-p--parent[=PARENT]
|
ネストされたリソースコントローラを作成 |
-r--resource
|
リソースコントローラを作成 |
-R--requests
|
リソースコントローラを作成時にフォームリクエストクラスを作成 |
-s--singleton
|
シングルトンリソースコントローラを作成 |
--creatable |
作成可能なシングルトンリソースコントローラを作成 |
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
-
--apiはcreate、editメソッドを含まないリソースコントローラを作成する -
--typeで指定できるのはスタブのファイル名に含まれる文字(controller.type.stubのtype)が指定できる -
--invokableは__invokeメソッドのみのコントローラクラスを作成する -
--modelでモデルクラスを指定すると、リソースコントローラでモデルクラスがタイプヒントで指定することができる-
--apiと組み合わせるとAPIリソースコントローラでも同様の事ができる - 存在しないモデルクラスを指定した場合、モデルクラスを作成する事もできる(内部的に
make:modelコマンドが実行される)
-
-
--parentは--modelと組み合わせて使う必要がある
# 1つの部署には複数の社員がいる
php artisan make:controller クラス名 --parent=Department --model=User
-
--resourceはindex、create、store、show、edit、update、destroyメソッドを用意した状態でコントローラクラスを作成する-
--modelでモデルクラスを指定する事もできる -
--requestsを付けるとstore、updateメソッド用のフォームリクエストクラスを作成する事ができる。(内部的にmake:requestコマンドが実行される)- この場合
--modelでモデルクラスを指定する必要がある(指定していない場合は無視される)
- この場合
- 3つを組み合わせると次ような指定になる
-
php artisan make:controller クラス名 --resource --model=User --requests
-
--singletonはshow、edit、updateメソッドのみのリソースコントローラを作成する- 上記3つのみと書いたけど、
create、store、destroyメソッドは定義されていて、abort(404);とだけ実装されている(indexメソッドだけは定義なし) -
--apiと組み合わせるとshow、updateメソッドのみリソースコントローラを作成することもできる -
--creatableを組み合わせるとcreate、store、destroyが使えるリソースコントローラが作成できる(abort(404);が書かれていない)
- 上記3つのみと書いたけど、
-
--test、--pest、--phpunitを指定するとtests/Feature/Http/Controllers配下にテストが作られる
リソースコントローラとオプションの組み合わせ
--は省略、--singletonは組み合わせをすべて記載している。
| メソッド | resource | api | singleton | singleton creatable |
singleton api |
singleton api creatable |
|---|---|---|---|---|---|---|
index |
⭕️ | ⭕️ | ❌ | ❌ | ❌ | ❌ |
create |
⭕️ | ❌ | ❌ | ⭕️ | ❌ | ❌ |
store |
⭕️ | ⭕️ | ❌ | ⭕️ | ❌ | ⭕️ |
show |
⭕️ | ⭕️ | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
edit |
⭕️ | ❌ | ⭕️ | ⭕️ | ❌ | ❌ |
update |
⭕️ | ⭕️ | ⭕️ | ⭕️ | ⭕️ | ⭕️ |
destroy |
⭕️ | ⭕️ | ❌ | ⭕️ | ❌ | ⭕️ |
make:event
イベントクラスを作成する。
php artisan make:event クラス名
実行するとapp/Events配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
make:exception
例外クラスを作成する。
php artisan make:exception クラス名
実行するとapp/Exceptions配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
--render |
空のrenderメソッドも一緒に作成 |
--report |
空のreportメソッドも一緒に作成 |
make:factory
モデルファクトリクラスを作成する。
php artisan make:factory クラス名
実行するとdatabase/factories配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-m--model
|
モデルと対応するファクトリクラスを作成 |
-
--modelを指定する場合は、ネームスペースがApp\Modelsから始まっている必要がある
php artisan make:factory クラス名 --model=\\App\\Models\\User
- 次の指定だと、作成するファクトリクラスには
App\Models\Users\Userのモデルと対応することになる
php artisan make:factory クラス名 --model=Users\\User
make:job
ジョブクラスを作成する。
php artisan make:job クラス名
実行するとapp/Jobs配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
--sync |
同期処理のジョブクラスを作成 |
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
-
--test、--pest、--phpunitを指定するとtests/Feature/Jobs配下にテストが作られる
make:listener
リスナクラスを作成する。
php artisan make:listener クラス名
実行するとapp/Listeners配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-e--event[=EVENT]
|
イベントクラスを自動的読み込みした状態で作成 |
-f--force
|
すでにファイルが存在しても上書きして作成 |
--queued |
非同期実行が可能なリスナクラスを生成 |
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
-
--eventでイベントクラスを指定すると、handleメソッドの引数にタイプヒントした状態で作成することができる - 存在しないイベントクラスを指定することも可能ではあるが、事前に
make:eventコマンドで作成しておく方が良いかと思われる -
--test、--pest、--phpunitを指定するとtests/Feature/Listeners配下にテストが作られる
make:mail
メールクラスを作成する。
php artisan make:mail クラス名
実行するとapp/Mail配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
-m--markdown[=MARKDOWN]
|
Markdownテンプレートを指定してメールクラスを作成 |
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
-
--markdownはresources/views配下のBladeテンプレートを指定する
# resources/views/mail/hello.blade.phpの場合
php artisan make:mail クラス名 --markdown=mail.hello
-
--test、--pest、--phpunitを指定するとtests/Feature/Mail配下にテストが作られる
make:middleware
ミドルウェアクラスを作成する。
php artisan make:middleware クラス名
実行するとapp/Http/Middleware配下にクラスが作られる。
| オプション | 説明 |
|---|---|
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
-
--test、--pest、--phpunitを指定するとtests/Feature/Http/Middleware配下にテストが作られる
make:migration
データベースマイグレーションファイルを作成する。
php artisan make:migration ファイル名
実行するとdatabase/migrations配下にデータベースマイグレーションファイルが作られる。
| オプション | 説明 |
|---|---|
--create[=CREATE] |
新規作成するテーブル名を指定して作成 |
--table[=TABLE] |
テーブル名を指定して作成 |
--path[=PATH] |
パスを指定して作成 |
--realpath |
--pathで指定したパスが絶対パス |
--fullpath |
フルパスを表示する非推奨 |
-
--create、--tableの2つ指定すると--tableで指定したテーブル名で新規作成の内容でデータベースマイグレーションファイルが作成される -
--pathを指定するとLaravelのベースディレクトリ配下(appと同じ階層)で作成される
php artisan make:migration ファイル名 --path=migrations
# migrations/Y_m_d_His_ファイル名.phpが作られる
-
--realpathを付けると--pathの指定したパスが絶対パスになる -
--pathの指定が上記のようなmigrationsだとmake:migrationを実行した場所に作成される(Laravelのベースディレクトリ配下で実行すると思うので、--realpathを付けない時と同じ結果になると思う) -
--realpathを付ける場合は、/migrationsのような/からパスを指定する必要がある(この場合、書き込み権限があるディレクトリを指定する必要がある) -
--fullpathを付けても何も起きないです (非推奨なんでそのうち消えると思います)
make:model
Eloquentモデルクラスを生成する。
php artisan make:model クラス名
実行するとapp/Models配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-a--all
|
Eloquentモデルクラスとマイグレーション、ファクトリ、シーダクラス、ポリシークラス、コントローラクラス、フォームリクエストクラスを作成 |
-c--controller
|
Eloquentモデルクラスとコントローラクラスを作成 |
-f--factory
|
Eloquentモデルクラスとファクトリを作成 |
--force |
すでにファイルが存在しても上書きして作成 |
-m--migration
|
Eloquentモデルクラスとマイグレーションを作成 |
--morph-pivot |
ポリモーフィックピボットモデルクラスを作成 |
--policy |
Eloquentモデルクラスとポリシクラスを作成 |
-s--seed
|
Eloquentモデルクラスとシーダクラスを作成 |
-p--pivot
|
ピボットモデルクラスを作成 |
-r--resource
|
Eloquentモデルクラスとリソースコントローラを作成 |
--api |
EloquentモデルクラスとAPIリソースコントローラを作成 |
-R--requests
|
リソースコントローラを作成時にフォームリクエストクラスを作成 |
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
-
--allはmake:modelで作れるクラス(ピボットモデルクラス以外)をまとめて指定できる- コントローラはリソースコントローラになるのでもしAPIリソースコントローラが良ければ
--apiを付ける必要がある
- コントローラはリソースコントローラになるのでもしAPIリソースコントローラが良ければ
-
--controllerを使う場合は--resourceまたは--apiのどちらかと組み合わせて使わないとモデルクラスがタイプヒントとして指定されない
php artisan make:model クラス名 --controller --resource
or
php artisan make:model クラス名 --controller --api
-
--requestsについても--controllerかつ--resourceまたは--apiのどちらかと組み合わせて使う必要がある
php artisan make:model クラス名 --controller --resource --requests
or
php artisan make:model クラス名 --controller --api --requests
-
--test、--pest、--phpunitを指定するとtests/Feature/Models配下にテストが作られる
make:notification
通知クラスを作成する。
php artisan make:notification クラス名
実行するとapp/Notifications配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
-m--markdown[=MARKDOWN]
|
Markdownテンプレートを指定して通知クラスを作成 |
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
-
--markdownはresources/views配下のBladeテンプレートを指定する
# resources/views/mail/hello.blade.phpの場合
php artisan make:notification クラス名 --markdown=mail.hello
-
--test、--pest、--phpunitを指定するとtests/Feature/Notifications配下にテストが作られる
make:observer
オブザーバクラスを作成する。
php artisan make:observer クラス名
実行するとapp/Observers配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
-m--model[=MODEL]
|
Eloquentモデルのすべてのリスナを1つにまとめたオブザーバクラスを生成 |
make:policy
ポリシークラスを作成する。
php artisan make:provider クラス名
実行するとapp/Policies配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
-m--model[=MODEL]
|
Eloquentモデルの表示、作成、更新、削除に関連するメソッドの サンプルを含んだポリシークラスを生成 |
-g--guard[=GUARD]
|
ガードに依存したポリシークラスを生成 |
-
--guardで指定したガードに依存っていうのは、config/auth.phpの'guards'定義している内容を指している - 下記の内容だと
--guardにはwebを指定すれば良いことになる
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
make:provider
サービスプロバイダクラスを作成する。
php artisan make:provider クラス名
実行するとapp/Providers配下にクラスが作られる。
bootstrap/providers.phpの配列に自動で追加される(Laravel11で追加)
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
make:request
フォームリクエストクラスを作成する。
php artisan make:request クラス名
実行するとapp/Http/Requests配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
make:resource
リソースクラスを作成する。
php artisan make:resource クラス名
実行するとapp/Http/Resources配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
-c--collection
|
リソースコレクションクラスを作成 |
-
--collectionを付けなくても、作成するクラス名にCollectionを含めると自動でリソースコレクションと判定して作成してくれる - 以下はどちらもリソースコレクションクラスになる
※継承しているクラスが共に\Illuminate\Http\Resources\Json\ResourceCollection
php artisan make:resource User --collection
php artisan make:resource UserCollection
make:rule
ルールクラスを作成する。
php artisan make:rule クラス名
実行するとapp/Rules配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
-i--implicit
|
暗黙のルールクラスを作成 |
- 項目が存在しない、項目が空文字の場合はバリデーションが実行されないが、
--implicitを付けることで空文字でもバリデーションを動くルールクラスを作成できます
php artisan make:rule クラス名 --implicit
make:scope
グローバルスコープクラスを作成する。
php artisan make:scope クラス名
実行するとapp/Models/Scopes配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
make:seeder
シーダクラスを作成する。
php artisan make:seeder クラス名
実行するとdatabase/seeders配下にクラスが作られる。
make:test
テストクラスを作成する。
php artisan make:test クラス名
実行するとtests/Feature配下にクラスが作られる。
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
-u--unit
|
tests/Unit配下に作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
-
--pestと--unitの2つ付けるとPestのテストファイルをtests/Unit配下に作成できる
php artisan make:test クラス名 --pest --unit
make:view
Bladeテンプレートを作成する。
php artisan make:view ファイル名
実行するとresources/views配下にBladeテンプレートが作られる。
また、サブディレクトリに作る場合は次のように指定する。
php artisan make:view ディレクトリ名.ファイル名
| オプション | 説明 |
|---|---|
-f--force
|
すでにファイルが存在しても上書きして作成 |
--extension[=EXTENSION] |
拡張子が.blade.php以外のファイルを作成 |
--test |
テストクラスを作成 |
--pest |
Pestのテストファイルを作成 |
--phpunit |
PHPUnitのテストクラスを作成(Laravel11で追加) |
-
--extensionを指定する場合は.は不要です
php artisan make:view ファイル名 --extension=tpl
-
--test、--pest、--phpunitを指定するとtests/Feature/View配下にテストが作られる
まとめ
make:xxxコマンドをまとめてみました。
実際コマンドを使って作るかと言われると微妙なところですが、
普段使わないmake:xxxコマンドでどんなファイルが作られるのか知る良い機会でした。
Discussion
下記Laravel 11.5.0で追加されたmake:interfaceとmake:traitの内容を反映
下記Laravel 11.26.0で追加されたmake:job-middlewareの内容を反映