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: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
make:interfaceとmake:traitにLaravel 11.5.0で追加された下記内容を反映