🍣

Laravel11にあるmake:xxxコマンドを全部調べた

2024/03/11に公開
1

はじめに

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.phpbatching.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.phpfailed.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.phpconnections.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で追加
  • --apicreateeditメソッドを含まないリソースコントローラを作成する。
  • --typeで指定できるのはスタブのファイル名に含まれる文字(controller.type.stubのtype)が指定できる。
  • --invokable__invokeメソッドのみのコントローラクラスを作成する。
  • --modelでモデルクラスを指定すると、リソースコントローラでモデルクラスがタイプヒントで指定することができる。
    • --apiと組み合わせるとAPIリソースコントローラでも同様の事ができる。
    • 存在しないモデルクラスを指定した場合、モデルクラスを作成する事もできる。(内部的にmake:modelコマンドが実行される。)
  • --parent--modelと組み合わせて使う必要がある。
# 1つの部署には複数の社員がいる
php artisan make:controller クラス名 --parent=Department --model=User
  • --resourceindexcreatestoreshoweditupdatedestroyメソッドを用意した状態でコントローラクラスを作成する。
    • --modelでモデルクラスを指定する事もできる。
    • --requestsを付けるとstoreupdateメソッド用のフォームリクエストクラスを作成する事ができる。(内部的にmake:requestコマンドが実行される。)
      • この場合--modelでモデルクラスを指定する必要がある。(指定していない場合は無視される。)
    • 3つを組み合わせると次ような指定になる。
php artisan make:controller クラス名 --resource --model=User --requests
  • --singletonshoweditupdateメソッドのみのリソースコントローラを作成する。
    • 上記3つのみと書いたけど、createstoredestroyメソッドは定義されていて、abort(404);とだけ実装されている。(indexメソッドだけは定義なし)
    • --apiと組み合わせるとshowupdateメソッドのみリソースコントローラを作成することもできる。
    • --creatableを組み合わせるとcreatestoredestroyが使えるリソースコントローラが作成できる。(abort(404);が書かれていない)
  • --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で追加
  • --markdownresources/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で追加
  • --allmake:modelで作れるクラス(ピボットモデルクラス以外)をまとめて指定できる。
    • コントローラはリソースコントローラになるのでもし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で追加
  • --markdownresources/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を指定すれば良いことになる。
config/auth.php
    '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