九保すこひ@フリーランスエンジニア|累計300万PVのブログ運営中
さてさて、最近は「Laravelの主要な機能を再チェック」するというコンセプトでブログ記事を書いていますが、これによって見逃していた機能や、より短いコードでの実装方法を発見するなどといった多くのメリットを感じています。
そして、次は何を学び直すべきかを考えていたときにふと「Laravelをメインで使い始めた理由のうちのひとつ」、artisanコマンド(コマンドラインで実行するLaravel専用の命令)はどうだろう、という考えが頭に浮かびました。
元々私はCakePHPをメインのフレームワークとして使っていましたが、その当時のCakePHPは何度も同じSQLを発行したり、とにかく配列で全データを指定しないといけないため可読性が悪かったりしてあまり好きなものではありませんでした。
そんな中、ある開発でLaravelに出会い、コードの書き方に感銘を受け、そしてartisanコマンドという「大幅なショートカット」を知った結果、メインとして開発で使うフレームワークを変更する決断をしたという経緯があります。
ということで、今回はそんな「artisanコマンド」の全実例をお届けします。
目次
- 1 パッケージとサービスのキャッシュを削除する(clear-compiled)
- 2 メンテナンス・モードにする(down)
- 3 メンテンナンス・モードを終了する(up)
- 4 実行環境を確認する(env)
- 5 コマンドのヘルプを表示する(help)
- 6 名言を表示する(inspire)
- 7 DBテーブルからSeedを作る(iseed)
- 8 artisanコマンドの一覧を表示する(list)
- 9 マイグレーションを実行する(migrate)
- 10 JavaScriptとCSSのスキャフォールドを変更する(preset)
- 11 ビルトインサーバーを実行する(serve)
- 12 対話的環境をスタートする(tinker)
- 13 appフォルダ内のネームスペースを変更する(app:name)
- 14 ログイン機能を追加する(make:auth)
- 15 Seedファイルを作成する(make:seeder)
- 16 期限の切れたパスワード・リセットのトークンを削除する
- 17 キャッシュを削除する(cache:clear)
- 18 キーを指定してキャッシュを削除する(cache:forget)
- 19 データベースに保存するキャッシュのマイグレーションを作成する(cache:table)
- 20 設定ファイルのキャッシュを作成する(config:cache)
- 21 設定ファイルのキャッシュを削除する(config:clear)
- 22 seedを実行する(db:seed)
- 23 イベントとリスナーを自動で作成する(event:generate)
- 24 アプリケーション・キーを更新する(key:generate)
- 25 Channelを作成する(make:channel)
- 26 artisanコマンドファイルを作成する(make:command)
- 27 コントローラーを作成する(make:controller)
- 28 イベントファイルを作成する(make:event)
- 29 Exceptionファイルを作成する(make:exception)
- 30 Factoryファイルを作成する(make:factory)
- 31 Jobファイルを作成する(make:job)
- 32 イベントリスナーを作成する(make:listener)
- 33 mailableを作成する(make:mail)
- 34 ミドルウェアを作成する(make:middleware)
- 35 マイグレーションを作成する(make:migration)
- 36 モデルを作成する(make:model)
- 37 Notificationを作成する(make:notification)
- 38 Observerを作成する(make:observer)
- 39 Policyを作成する(make:policy)
- 40 サービス・プロバイダーを作成する(make:provider)
- 41 フォーム・リクエストを作成する(make:request)
- 42 APIリソースを作成する(make:resource)
- 43 バリデーション・ルールを作成する(make:rule)
- 44 テストを作成する(make:test)
- 45 マイグレーションを始めからやり直す(migrate:fresh)
- 46 マイグレーションを始めからやり直す(migrate:refresh)
- 47 全ロールバックを実行する(migrate:reset)
- 48 ロールバックを実行する(migrate:rollback)
- 49 マイグレーションの状態を表示する(migrate:status)
- 50 Notificationテーブル用のマイグレーションを作成する(notification:table)
- 51 パッケージ情報のキャッシュを再構築する(package:discover)
- 52 キューのマイグレーションを作成する(queue:table, queue:failed-table)
- 53 IDを指定して失敗したキューを削除する(queue:forget)
- 54 キュー・リスナーを実行する(queue:listen)
- 55 キュー・ワーカーを再起動する(queue:restart)
- 56 失敗したキューを再実行する(queue:retry)
- 57 キューを実行する(queue:work)
- 58 Routeのキャッシュを作成する(route:cache)
- 59 Routeのキャッシュを削除する(route:clear)
- 60 Routeのリストを表示する(route:list)
- 61 スケジュールを実行する(schedule:run)
- 62 セッション用テーブルのマイグレーションを作成する(session:table)
- 63 公開ストレージファイルが使えるようにする(storage:link)
- 64 ファイルをPublishする(vendor:publish)
- 65 ビューのキャッシュを作成する(view:cache)
- 66 ビューのキャッシュを削除する(view:clear)
- 67 おわりに
パッケージとサービスのキャッシュを削除する(clear-compiled)
php artisan clear-compiled
Laravelは、必要なパッケージやServiceProviderへのパスなどが書かれた、ファイルを「bootstrap/cache」フォルダ内に自動的に作成するようになっています。
そして、これらのファイルを削除するのがこのコマンドの役目です。
そのため、用途としてはcomposerでLaravelパッケージをインストールしたら(何かの影響で)エラーが出た場合などにこのコマンドを実行するといいでしょう。
ちなみに、ファイルを削除した後ページにアクセスすると自動的に新しいファイルが作成されます。
メンテナンス・モードにする(down)
php artisan down
このコマンドを実行すると、通常ページの代わりに「Be right back.(すぐ戻ります)」というメッセージが全ページで表示されるようになります。
「Be right back.」メッセージを変更する(–message)
例えば、メンテンナンス・モード時に表示される「Be right back.」というメッセージを「現在メンテンナンス中です。」と変更するには「–message」オプションを使います。
php artisan down --message="現在メンテンナンス中です"
※注意
ただし、ここで設定したメッセージを表示するためには以下のパスに503専用テンプレートを作成し、さらにstorageフォルダからメッセージを読み込むコードが必要になります。(つまり、デフォルトでは表示変更できません)
resources/views/erros/503.blade.php
(テンプレートのコード例)
@extends('errors::layout') @section('title', 'Service Unavailable') @section('message', json_decode(file_get_contents(storage_path('framework/down')), true)['message'])
これでメッセージを指定するとその都度変更されるようになります。
(ちなみに、デフォルトで表示の変更をしてもいいのでは・・・と思いますが、自由度を優先させてのことなのかもしれません)
Retry-Afterを送信する(–retry)
もし、メンテンナンスのページを表示するときに「Retry-After」ヘッダーを送信したい場合は「–retry」オプションを使います。
php artisan down --retry=60
※ちなみに、Retry-Afterは、「どのぐらい(秒数)待った後に再実行するか??」を指定するHTTPヘッダーです。詳しくはこちらをご覧ください。(英語ページ)
特定のIPアドレスはアクセスできるようにする(–allow)
メンテンナンス・モードはそのままでは全ユーザーをサイトから遮断してしまうことなるため、結果としてメンテンナンスをする人(開発者)でさえ通常ページにアクセスできなくなってしまいます。
そこで、これを回避するために使うのが「–allow」オプションです。
php artisan down --allow=127.0.0.1
このオプションであなたのIPアドレスを追加すると、あなただけは通常ページにアクセスできるようになります。
なお、複数のIPアドレスを指定するは以下のようになります。
php artisan down --allow=127.0.0.1 --allow=127.0.0.2
メンテンナンス・モードを終了する(up)
php artisan up
メンテンナンス・モードを抜けるためのコマンドです。
実行環境を確認する(env)
php artisan env
Laravelは、「.env」ファイル内に「APP_ENV」という実行環境を指定する場所があります。(つまり「local」、「production」「staging」などを記述します)
APP_ENV=local
「php artisan env」コマンドを実行すると、この「APP_ENV」の中身を確認することができます。
コマンドのヘルプを表示する(help)
php artisan help (コマンド)
artisanコマンドの使い方を確認します。例えば、「down」コマンドを実行するにはこうなります。
php artisan help down
ただし、以下のように「-h」をつけることでも同じ内容を表示することができます。もしかすると、こちらの方が直感的に使えるかもしれません。
php artisan down -h
名言を表示する(inspire)
php artisan inspire
このコマンドを実行すると、以下のマルクス・アントニウスの名言が表示されます。(つまり、お遊び的なコマンドですね)
Very little is needed to make a happy life.(幸福な人生にするために必要なものはほとんどない)
ただ、実際にはこの名言には以下の文章が続くようです。
it is all within yourself, in your way of thinking.(全てはあなたの中に、そしてあなたの考え方の中にある)
開発者からの我々へのエールですね。^^
DBテーブルからSeedを作る(iseed)
php artisan iseed (テーブル名)
すでに存在しているDBテーブルのデータを使ってSeedファイルを作成するコマンドです。
もしすでにSeedファイルが存在している場合は上書きするかどうかを以下のように聞かれるので、「yes」もしくは「no」を選択してください。
File ItemsTableSeeder.php already exist. Do you wish to override it? [yes|no]
ちなみに、このコマンドではSeedファイルを作るだけなので、これを実行するには「database/seeds/DatabaseSeeder.php」に登録する必要があります。
artisanコマンドの一覧を表示する(list)
php artisan list
artisanコマンドの一覧を確認するコマンドです。
ただ、もっとシンプルに「php artisan」とするだけで同じことができるので、こちらの使用をおすすめします。
php artisan
マイグレーションを実行する(migrate)
php artisan migrate
データベースを指定する(–database)
php artisan migrate --database=(コネクション名)
マイグレーションするデータベースを指定するオプションです。
ただし注意しないといけないのは、指定するのは実際のデータベース名ではなく「コネクション名」ということです。つまり、指定できるのは「config/database.php」内の「connections」で設定されている名前である必要があります。(初期では「sqlite」や「mysql」などがあります)
実行確認を省略する(–force)
php artisan migrate --force
もし、実行環境が「production」(←本番環境)に設定されている場合、安全のためartisanコマンドは「本当にコマンド実行しても大丈夫ですか?」と確認するようになっています。
「–force」オプションを使うとこの確認を省略することができます。(つまり、ローカルやステージング環境では意味がありません)
ちなみに、実行環境は「.env」ファイルで変更可能です。
APP_ENV=production
マイグレーション・ファイルがあるフォルダのパスを指定する(–path)
php artisan migrate --path=(マイグレーション・フォルダのパス)
Laravelではデフォルトのマイグレーション・フォルダは「database/migrations」となっていますが、何かの理由で別のフォルダを指定したい場合は「–path」オプションを使います。
例えばこのように指定します。
php artisan migrate --path=database/migrations_2
マイグレーション・フォルダをrealpathで指定する(–realpath)
php artisan migrate --path=(マイグレーションフォルダ) --realpath
「–path」で指定するパスをrealpathで指定するオプションです。realpathについてはこちらをご覧ください。
今から実行されるマイグレーションのSQLを確認する(–pretend)
php artisan migrate --pretend
「–pretend」オプションをつけると未実行のマイグレーションを実行したらどんなSQL文が実行されるかを表示することができます。
※つまり、このオプションがあると実際にSQL文が実行されません。確認できるだけです。
Seedも同時に実行する(–seed)
php artisan migrate --seed
マイグレーションを実行しつつSeedも実行(初期データを保存)したい場合は「–seed」オプションを使います。
マイグレーション番号を増やしながら実行する(–step)
php artisan migrate --step
マイグレーションは複数ファイルを一気に実行してくれるのですが、デフォルトではその「マイグレーション番号」は全て同じになっています。(つまり、ロールバックすると同時に実行したマイグレーションは全て元通りになる)
しかし「–step」オプションを使うとマイグレーションが実行されるたびに「マイグレーション番号」が増やされるため、例えば以下のような事が起こります。
- マイグレーションを「–step」オプションをつけて実行
- 全部で5つが実行された
- ロールバックでマイグレーションをもとに戻すようコマンドを実行
- ロールバックされるのは最後に実行したマイグレーションのみ
JavaScriptとCSSのスキャフォールドを変更する(preset)
php artisan preset (none, bootstrap, vue, reactのどれか)
Laravelは、インストールした時点でVueとBootstrapを使うことができるようになっていますが、これは必須ではなく、例えば「react.js」に変更することもできます。
実際の使い方は以下のようになります。
php artisan preset react
また、指定できるタイプは以下の4つです。
- none(スキャフォールドを削除します)
- bootstrap
- vue
- react
※ただし、このコマンドを実行しただけではコンパイルは行われませんので「npm install && npm run dev」などを実行する必要があります。
ビルトインサーバーを実行する(serve)
php artisan serve
このコマンドを実行するとPHPのビルトインサーバーを実行することができます。実行後は、以下のような表示がでますので、「http://127.0.0.1:8000」へアクセスすると簡単にページ表示できます。
Laravel development server started: <http://127.0.0.1:8000>
※ちなみに終了する場合はctrl+cをタイプします。(Ubuntuの場合)
ビルトインサーバーを実行するホストを指定する(–host)
php artisan serve --host=127.0.0.2
実行するホストを変更するには「–host」オプションをつけます。(デフォルトは「127.0.0.1」です)
ビルトインサーバーのポートを指定する(–port)
php artisan serve --port=8001
実行するポートを変更する場合は「–port」オプションをつけます。(デフォルトは8000です。)
対話的環境をスタートする(tinker)
php artisan tinker
コマンドライン上でPHPコードを実行するための対話的な環境(REPL)をスタートさせるコマンドです。
※終了する場合はctrl+cをタイプします。(Ubuntuの場合)
対話的環境に特定ファイルをインクルードする
もしTinkerを使う場合で、事前に特定のファイルをinclude()して置きたい場合は変数として指定することで実現できます。
php artisan tinker /home/php-dev/laravel56/test.php
さらに、複数ファイルを指定したい場合は以下のように続けて追加します。
php artisan tinker /home/php-dev/laravel56/test.php /home/php-dev/laravel56/test2.php
appフォルダ内のネームスペースを変更する(app:name)
php artisan app:name (ネームスペース)
Laravelのappフォルダ内のファイルには初期値で「App」というネームスペースがつけられていますが、このコマンドを使えばこのネームスペースを変更することがです。
例えば、「MyApp」に変更する場合はこうなります。
php artisan app:name MyApp
※注意
ただし、絶対に空白で実行しないでください。変更前の場所が分からなくなってしまうので、非常に元に戻しにくくなってしまします。
ログイン機能を追加する(make:auth)
php artisan make:auth
Laravelは初期状態ではログイン機能は使えませんが、このコマンドを使うことで簡単にログイン機能を実装することができます。
※注意
このコマンドを実行しただけではマイグレーションのファイルが作成されるだけです。つまり、「php artisan migrate」でマイグレーションを実行しないといけません。
ログイン機能のビューだけを作成する(–views)
「–views」オプションを使えば、ログイン機能の中からビュー(テンプレート)だけを作成することができます。
ログイン機能を上書きする(–force)
重複して「make:auth」を実行する場合、「上書きしていいですか?」という確認が表示されるのですが、「–force」オプションをつけることでこの確認を全て省略することができます。
Seedファイルを作成する(make:seeder)
php artisan make:seeder (Seed名)
データベースの初期データを追加するためのSeedファイルを作成します。例えば、初期ユーザーを追加する場合は以下のようになります。
php artisan make:seeder UsersTableSeeder
これで、「database/seeds」フォルダ内に「UserTableSeeder.php」というファイルが作成されます。
そして、このファイルに以下のようなコードでデータを追加するロジックを記述します。
<?php use Illuminate\Database\Seeder; class UsersTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { for($i = 1 ; $i <= 3 ; $i++) { \App\User::create([ 'name' => 'ユーザー'. $i, 'email' => 'user'. $i .'@example.com', 'password' => bcrypt('xxxxxxxx') ]); } } }
※注意
ただし、Seedファイルは作成するだけでは実行されません。実行するには、「database/seeds/DatabaseSeeder.php」のrun()内に作成したファイルを登録する必要があります。
$this->call(UsersTableSeeder::class);
期限の切れたパスワード・リセットのトークンを削除する
php artisan auth:clear-resets
Laravelでは「php artisan make:auth」を実行すると、以下のようなパスワードのリセットページも自動的に作成してくれます。
そして、このページからパスワード・リセットを申請すると「password_resets」テーブルの中にトークンが設定され、このトークを元にパスワードを再設定することになります。
「auth:clear-resets」コマンドは、このトークンの中から期限が切れたものを削除することができます。
※ちなみに、有効期限は「config/auth.php」内の「expire」(分)で判断されます。
'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, ], ],
特定のパスワード・リセットグループ名を指定する
artisan auth:clear-resets (グループ名)
auth:clear-resetsには特定のグループ名を指定することもできます。これは、例えば、ユーザーテーブルが複数ある場合などを想定しています。
実際の例を見てみましょう。まずサンプルとして「config/auth.php」に新しいグループ「customers」を追加します。
'passwords' => [ 'users' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 60, ], 'customers' => [ 'provider' => 'users', 'table' => 'password_resets', 'expire' => 10, ], ],
そして、「auth:clear-resets」で期限切れのトークンを削除する場合は以下のようにグループ名を指定します。
artisan auth:clear-resets customers
これでcustomersに関連するトークンだけを対象とすることができます。
キャッシュを削除する(cache:clear)
php artisan cache:clear
「storage/framework/cache/data」内に保存されているキャッシュデータを削除するコマンドです。
※注意
ただし、PHP側で作成したキャッシュは「作成ユーザー」が違っていることがあり、このコマンドでは権限不足で削除ができない可能性があります。その場合は以下のようなコマンドを直前に実行しておく必要があります。
sudo chmod 777 storage -R
特定のキャッシュ・ドライバーを指定する
「config/cache.php」の「stores」に設定されているキャッシュ・ドライバーを指定する場合は変数として以下のように実行します。
php artisan cache:clear database
※ちなみにLaravelのキャッシュ・ドライバーは初期状態で以下のようになっています。
'stores' => [ 'apc' => [ 'driver' => 'apc', ], 'array' => [ 'driver' => 'array', ], 'database' => [ 'driver' => 'database', 'table' => 'cache', 'connection' => null, ], 'file' => [ 'driver' => 'file', 'path' => storage_path('framework/cache/data'), ], 'memcached' => [ 'driver' => 'memcached', 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), 'sasl' => [ env('MEMCACHED_USERNAME'), env('MEMCACHED_PASSWORD'), ], 'options' => [ // Memcached::OPT_CONNECT_TIMEOUT => 2000, ], 'servers' => [ [ 'host' => env('MEMCACHED_HOST', '127.0.0.1'), 'port' => env('MEMCACHED_PORT', 11211), 'weight' => 100, ], ], ], 'redis' => [ 'driver' => 'redis', 'connection' => 'default', ], ],
php artisan cache:clear --tags=(キャッシュのタグ)
タグを指定してキャッシュを削除する場合には「–tags」オプションを使います。複数指定する場合はカンマで区切ります。
php artisan cache:clear --tags=key1,key2,key3
※注意
ただし、キャッシュにタグが使えるのは「file」「database」以外のキャッシュ・ドライバーです。
キーを指定してキャッシュを削除する(cache:forget)
php artisan cache:forget (キャッシュのキー)
直接キャッシュのキーを指定して削除するコマンドです。
※ただし、作成ユーザーが異なると「削除しました」と表示がでますが、実際には削除できていない場合があるので気をつけてください。
もし特定のキャッシュ・ドライバーも指定する場合は第2引数で指定します。
php artisan cache:forget my-cache file
データベースに保存するキャッシュのマイグレーションを作成する(cache:table)
php artisan cache:table
Laravelは初期状態では、たとえ「.env」で設定をしてもデータベースを使ったキャッシュ保存には対応できません。
CACHE_DRIVER=database
なぜなら、データが保存されているテーブルが存在しないからです。そのため、まずは「php artisan cache:table」でマイグレーション・ファイルを作成し、その後「php artisan migrate」を実行して専用テーブルを作成しましょう。
これが終わるとDB内に「cache」というテーブルが作成されます。
設定ファイルのキャッシュを作成する(config:cache)
php artisan config:cache
設定ファイルのキャッシュを作成しておくと、毎回読み込む作業を省略できるのでページ表示の高速化対策になります。
設定ファイルのキャッシュを削除する(config:clear)
php artisan config:clear
前項目で作成したキャッシュを作成するコマンドです。
seedを実行する(db:seed)
php artisan db:seed
データベースに初期データを追加するSeedを実行するコマンドです。
※ちなみに以下のように「migrate」のオプションでも利用できます。
php artisan migrate --seed
クラス名を指定してSeedする(–class)
php artisan db:seed --class=(クラス名)
デフォルトでは「DatabaseSeeder」が呼ばれますが、以下のように個別のSeedクラスを指定することができます。
php artisan db:seed --class=UsersTableSeeder
DBコネクションを指定してSeedする(–database)
php artisan db:seed --database=mysql
migrateの「–database」と同じです。詳しくはこちら。
確認を省略してSeedする(–force)
php artisan db:seed --force
migrateの「–force」と同じです。詳しくはこちら。
イベントとリスナーを自動で作成する(event:generate)
php artisan event:generate
もちろんイベントと、そのリスナーは手動で作成することができますが数が多くなってくるとめんどうな作業になってきます。
これを自動化するのが「event:generate」コマンドです。実際の例を見てみましょう。
まずは「app/Providers/EventServiceProvider.php」を開いて「$listen」に登録したいイベントとリスターを追加します。(※以下のコードはデフォルトで記述されたものです)
protected $listen = [ 'App\Events\Event' => [ 'App\Listeners\EventListener', ], ];
では、この状況でコマンドを実行してフォルダを見てみましょう。
EventServiceProviderで登録したイベントとリスナーが自動で作成されています。
アプリケーション・キーを更新する(key:generate)
php artisan key:generate
Laravelは「.env」内の「APP_KEY」にあるランダムな文字列(アプリケーション・キー)を使って暗号化を行っています。そして、このコマンドを実行するとそのキーを新しいものに変更することができます。
新しいアプリケーション・キーを表示だけする(–show)
このオプションをつけると「.env」内の「APP_KEY」は自動的に更新されず、新しいキーの表示だけを行います。つまり、このオプションを使うと自分でキーの変更をしないといけません。
確認を省略する(–force)
migrateの「–force」と同じです。詳しくはこちら。
Channelを作成する(make:channel)
php artisan make:channel (Channelのクラス名)
新しくBroadcastingのChannelを作成する場合に利用するコマンドです。実際の例を見てみましょう。
php artisan make:channel OrderChannnel
これを実行すると、以下のように「app/Broadcasting」フォルダに新しいChannelのファイルが作成されます。
artisanコマンドファイルを作成する(make:command)
php artisan make:command (コマンドのクラス名)
独自のartisanコマンドに必要なコマンドファイルを作成します。以下のように作成したいクラス名を指定してください。
php artisan make:command TestCommand
これを実行すると、「app/Console/Commands」内に新しいファイルが作成されます。
コマンドを呼び出す文字列を指定する(–command)
php artisan make:command TestCommand --command=test:command
このオプションをつけると、新しく作成されるファイルの「$signature」を自動で入れ替えてくれます。
protected $signature = 'test:command';
コントローラーを作成する(make:controller)
php artisan make:controller (コントローラーのクラス名)
新しくコントローラーを作成する場合に使うコマンドです。このコマンドを実行すると、「app/Http/Controllers」内に新しいコントローラーが作成されます。
ちなみに階層を深くして作成したい場合は以下のようにバックスラッシュ2つをつけると自動的に階層を深くしてくれます。
php artisan make:controller User\\HomeController
※この場合は「app/Http/Controllers/User/HomeController.php」が作成されます。
モデルをバインディングする(–model, -m)
php artisan make:controller ItemController --model=Item
もしすでに存在しているモデルをコントローラー内にバインディングする(≒RESTfulな構成にする)場合は「–model」オプションを使います。
このオプションをつけると、
- index
- create
- store
- show
- edit
- update
- destroy
のメソッドが作成され、さらに以下のように自動的にモデルをバインディングしてくれます。
public function show(Item $item) { // }
リソース用のコントローラーを作成する(–resource, -r)
php artisan make:controller ItemController --resource
前項目の「–model」オプションと似ていますが、こちらはモデルのバインディングはせず、メソッドの引数に「$request」や「$id」がついたメソッドを作成することができます。
public function update(Request $request, $id) { // }
API用のコントローラーを作成する(–api)
php artisan make:controller ItemController --api
前項目の「–resource」オプションと似ていますが、以下2つのメソッドが存在しないコントローラーを作成します。つまりAPI用なので、入力ページのメソッドが存在しないわけですね。
- create
- edit
イベントファイルを作成する(make:event)
php artisan make:event (イベントのクラス名)
新しくイベントファイルを作成するコマンドです。例えば、Itemでデータが保存されたときに実行するイベントの場合は以下のようになります。
php artisan make:event ItemSaved
これを実行すると、「app/Events」内に新しいファイルが作成されます。
Exceptionファイルを作成する(make:exception)
php artisan make:exception (Exceptionのクラス名)
独自のExceptionを作成するコマンドです。必要な引数はクラス名です。
php artisan make:exception OrderException
これを実行すると「app/Exceptions」に新しくファイルが作成されます。
Factoryファイルを作成する(make:factory)
php artisan make:factory (Factoryのクラス名)
独自のExceptionを作成するコマンドです。必要な引数はクラス名です。
php artisan make:factory PostFactory
これを実行すると「database/factories」に新しくファイルが作成されます。
特定のモデルを設定したFactoryを作成する(–model, -m)
php artisan make:factory ItemFactory --model=Item
このオプションをつけて実行すると、以下のように指定したモデルが設定されたFactoryが作成されます。
$factory->define(App\Item::class, function (Faker $faker) { return [ // ]; });
Jobファイルを作成する(make:job)
php artisan make:job (Jobのクラス名)
Jobを作成するコマンドです。必要な引数はクラス名です。
php artisan make:job ProcessPodcast
これを実行すると「app/Jobs」に新しくファイルが作成されます。
同期型のJobを作成する(–sync)
php artisan make:job ProcessPodcast --sync
動機を明示したJobを作成するオプションです。
イベントリスナーを作成する(make:listener)
php artisan make:listener (リスナーのクラス名)
イベントリスナーを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:listener SendInvoice
これを実行すると「app/Listeners」に新しくファイルが作成されます。
※ただし、「event:generate」を使えばイベントとリスナーを一度に作成することができるので、そちらの方が効率的に作業ができるかもしれません。
イベントをバインディングしたリスナーを作成する(–event)
php artisan make:listener SendInvoice --event=OrderCreated
イベントをバインディングした状態のリスナーを作成する場合は、「–event」オプションをつけます。このオプションを使うと以下のように「hundle()」メソッドにイベントクラスをバインディングしてくれます。
public function handle(OrderCreated $event) { // }
mailableを作成する(make:mail)
php artisan make:mail (mailableのクラス名)
メール送信ファイル(mailable)を作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:mail inquiryReceived
これを実行すると「app/Mail」に新しくファイルが作成されます。
上書き確認を省略する(–force)
php artisan make:mail inquiryReceived --force
同じ名前のmailableがある場合には確認が表示されるようになっていますが「–force」はこれを省略できます。
markdownのテンプレートも同時に作成する(–markdown)
php artisan make:mail inquiryReceived --markdown=emails.inquiry.received
「–markdown」オプションをつけると、「resources/views」以下にmarkdownのテンプレートを同時に作成でき、さらにmailable内にもそのテンプレートが自動で記述されます。
public function build() { return $this->markdown('emails.inquiry.received'); }
ミドルウェアを作成する(make:middleware)
php artisan make:middleware (middlewareのクラス名)
middlewareを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:middleware CheckCountry
これを実行すると「app/Http/Middleware」に新しくファイルが作成されます。
マイグレーションを作成する(make:migration)
php artisan make:migration (マイグレーションのクラス名)
マイグレーションを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:migration create_items_table
これを実行すると「database/migrations」に新しくファイルが作成されます。
新しく作成するテーブル名を指定する(–create)
php artisan make:migration create_items_table --create=xxx
もしデフォルト以外のテーブル名を指定したい場合は「–create」オプションをつけます。上の場合は、以下のように「xxx」がテーブル名として記述されたマイグレーションを作成することができます。
Schema::create('xxx', function (Blueprint $table) { $table->increments('id'); $table->timestamps(); });
すでにあるテーブル名を指定する(–table)
php artisan make:migration create_items_table --table=yyy
例えば、すでにあるテーブルにフィールドをひとつ追加したい場合に使うオプションです。上の例を実行すると以下のようになります。
Schema::table('yyy', function (Blueprint $table) { // });
保存するパスを指定する(–path)
php artisan make:migration create_items_table --path=database/migrations2
マイグレーションを作成したいフォルダをしていするオプションです。
realpathでパスを指定する(–realpath)
php artisan make:migration create_items_table --path=database/migrations --realpath
「–path」で指定するパスをrealpathで指定するオプションです。realpathについてはこちらをご覧ください。
モデルを作成する(make:model)
php artisan make:model (モデル名)
新しくモデルを作成するコマンドです。例えば「Item」というモデルを作成する場合は以下のようになります。
php artisan make:model Item
マイグレーション、Factory、リソース・コントローラーを同時に作成する(–all, -a)
php artisan make:model Item --all
つまり、このオプションを使うと以下の4ファイルが作成されます。
- モデル
- コントローラー
- マイグレーション
- Factory
コントローラーも同時に作成する(–controller, -c)
php artisan make:model Item --controller
この例の場合、「app/Http/Controllers/ItemController.php」というファイルが作成されます。
Factoryも同時に作成する(–factory, -f)
php artisan make:model Item --factory
この例の場合、「database/factories/ItemFactory.php」というファイルが作成されます。
マイグレーションも同時に作成する(–migration, -m)
php artisan make:model Item --migration
この例の場合、「database/migrations/(日付)_create_items_table.php」というファイルが作成されます。
Pivotモデルを作成する(–pivot, -p)
php artisan make:model Item --pivot
リソース・コントローラーを作成する(–resource, -r)
php artisan make:model Item --resource
この例の場合、「app/Http/Controllers/ItemController.php」というファイルが作成されます。
上書き確認を省略する(–force)
こちらと同じです。
Notificationを作成する(make:notification)
php artisan make:notification (notificationのクラス名)
Notificationを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:notification ItemOrdered
これを実行すると「app/Notifications」に新しくファイルが作成されます。
Observerを作成する(make:observer)
php artisan make:observer (Observerのクラス名)
Observerを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:observer UserObserver
これを実行すると「app/Observers」に新しくファイルが作成されます。
モデルをバインディングする(–model)
php artisan make:observer UserObserver --model=User
「–model」オプションをつけると以下のように作成されるObserver内に指定されたモデルがバインディングされます。
public function created(User $user) { // }
Policyを作成する(make:policy)
php artisan make:policy (Policyのクラス名)
Policyを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:policy ItemPolicy
これを実行すると「app/Policies」に新しくファイルが作成されます。
モデルをバインディングする(–model)
php artisan make:policy ItemPolicy --model=Item
「–model」オプションをつけると以下のように作成されるPolicy内に指定されたモデルがバインディングされます。
public function view(User $user, Item $item) { // }
サービス・プロバイダーを作成する(make:provider)
php artisan make:provider (Providerのクラス名)
サービス・プロバイダーを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:privider TestServiceProvider
これを実行すると「app/Providers」に新しくファイルが作成されます。
フォーム・リクエストを作成する(make:request)
php artisan make:request (Requestのクラス名)
フォーム・リクエストを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:request ItemRequest
これを実行すると「app/Http/Requests」に新しくファイルが作成されます。
APIリソースを作成する(make:resource)
php artisan make:resource (APIリソースのクラス名)
APIリソースを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:request User
これを実行すると「app/Http/Resources」に新しくファイルが作成されます。
リソースコレクションとして作成する(–collection)
php artisan make:resource User --collection
バリデーション・ルールを作成する(make:rule)
php artisan make:rule
独自のバリデーション・ルールを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:rule Over20
これを実行すると「app/Rules」に新しくファイルが作成されます。
テストを作成する(make:test)
php artisan make:test (テストのクラス名)
テスト・ファイルを作成するコマンドです。以下のようにクラス名を指定して利用します。
php artisan make:test UserTest
これを実行すると「tests/Feature」に新しくファイルが作成されます。
Unitフォルダにテストを作成する(–unit)
php artisan make:test UserTest --unit
Featureフォルダではなく、Unitフォルダにテストを作成する場合は「–unit」オプションをつけます。
マイグレーションを始めからやり直す(migrate:fresh)
php artisan migrate:fresh
「migrate:fresh」を実行すると、以下の手順が実行されます。
- 全てのテーブルを削除(DROP)する
- マイグレーションを再実行
これは、次の項目で説明する「migrate:refresh」と似ていますが、テーブルの削除方法が違っています。
つまり、「migrate:fresh」の方はマイグレーション内のdown()を実行するわけではなく、一気にテーブルを削除します。
public function down() { Schema::dropIfExists('*****'); }
そのため、「migrate:fresh」のみを使うのであれば、down()メソッドは必要ありませんし、もしデータベース構造が何かの原因でマイグレーションと整合性がとれず「migrate:refresh」でエラーが発生する場合は「migrate:fresh」を使うと初期状態に戻すことができます。
データベースを指定する(–database)
php artisan migrate:fresh --database=(コネクション名)
詳しくはこちらをご覧ください。
データベースのビューを削除する(–drop-views)
php artisan migrate:fresh --drop-views
DBのビューも削除するオプションです。
※ここでいう「view」とはLaravelのビューではなくデータベースのビューになります。
実行確認を省略する(–force)
php artisan migrate:fresh --force
詳しくはこちらをご覧ください。
マイグレーション・ファイルがあるフォルダのパスを指定する(–path)
php artisan migrate:fresh --path=(マイグレーション・フォルダのパス)
詳しくはこちらをご覧ください。
マイグレーション・フォルダをrealpathで指定する(–realpath)
php artisan migrate:fresh --path=(マイグレーション・フォルダのパス) --realpath
詳しくはこちらをご覧ください。
Seedも同時に実行する(–seed)
php artisan migrate:fresh --seed
詳しくはこちらをご覧ください。
Seedをクラス名を指定して実行(–seeder)
php artisan migrate:fresh --seeder=UsersTableSeeder
特定のSeedだけを実行する場合に使うオプションです。
マイグレーションを始めからやり直す(migrate:refresh)
php artisan migrate:refresh
全てのロールバックを実行して、再度マイグレーションを実行しなおします。「migrate:fresh」と似ていますがテーブルを削除するわけではなくdown()メソッドを実行している点が違っています。詳しくはmigrate:freshをご覧ください。
また、以下のオプションもmigrate:freshと内容は同じになります。
- –database
- –force
- –path
- –realpath
- –seed
- –seeder
ロールバックするステップ数を指定する(–step)
php artisan migrate:refresh --step=1
もしロールバックを全てではなくステップ数で指定したい場合はこのオプションを使います。
全ロールバックを実行する(migrate:reset)
php artisan migrate:reset
全てのロールバックを実行するコマンドです。注意が必要なのは、このコマンドではロールバックでテーブルが削除されるだけという点です、再度テーブルをマイグレーションで作成したい場合は「migrate:fresh」もしくは「migrate:refresh」を使うといいでしょう。
※以下のオプションはmigrate:freshと内容は同じになります。
- –database
- –force
- –path
- –realpath
ロールバックで実行されるSQL文を表示する(–pretend)
php artisan migrate:reset --pretend
migrate –pretendと同じ内容です。
ロールバックを実行する(migrate:rollback)
php artisan migrate:rollback
マイグレーションを前の状態に戻す「ロールバック」を実行するコマンドです。
※以下のオプションはmigrate:freshと内容は同じになります。
- –database
- –force
- –path
- –realpath
また、「–pretend」はmigrate –pretendと同じ、「–step」はmigrate:fresh –step=と同じ内容です。
マイグレーションの状態を表示する(migrate:status)
php artisan migrate:status
マイグレーションが現在どのような状態かを表示するコマンドです。
※以下のオプションはmigrate:freshと内容は同じになります。
- –database
- –force
- –path
Notificationテーブル用のマイグレーションを作成する(notification:table)
php artisan notifications:table
※あくまでマイグレーション・ファイルの作成までですので、「php artisan migrate」を実行する必要があります。
パッケージ情報のキャッシュを再構築する(package:discover)
php artisan package:discover
このコマンドを実行すると「bootstrap/cache/packages.php」を作成しなおすことができます。つまり、composerでパッケージをインストールした際に自動的に実行される機能を手動で実行するものです。
キューのマイグレーションを作成する(queue:table, queue:failed-table)
(キュー本体)
php artisan queue:table
(失敗したキュー)
php artisan queue:failed-table
キューをデータベースで運用するときに必要となるテーブルのマイグレーションを作成するコマンドです。つまり、上のコマンドを実行後「php artisan migrate」でマイグレーションを実行する必要があります。
IDを指定して失敗したキューを削除する(queue:forget)
php artisan queue:forget (失敗したキューのID)
キュー・リスナーを実行する(queue:listen)
php artisan queue:listen
キューを待ち構えて、実行すべきものがあったら実行する「キュー・リスナー」を起動するコマンドです。
※ただし、Laravel 5.3以降ではこのコマンドはドキュメントに登場しなくなり、「queue:work」のみ紹介されています。
キュー・ワーカーを再起動する(queue:restart)
php artisan queue:restart
失敗したキューを再実行する(queue:retry)
php artisan queue:retry (失敗したキューのID、もしくは「all」)
キューを実行する(queue:work)
php artisan queue:work
常駐プログラム(デーモン)として待ち構え、キューを実行するコマンド。
ちなみに以下のようにキューの種類を指定することもできます。
php artisan queue:work redis
指定できるのは、「config/queue.php」内のconnectionsのコネクションです。
名前を指定してキューを実行する(–queue)
php artisan queue:work --queue=high,low
例えば、優先度が高い「high」やその逆の「low」などキューには名前をつけることができますが、この中から必要なものだけを指定してキューを実行するオプションです。デフォルトは、「default」
次のキューをひとつだけ実行する(–once)
php artisan queue:work --once
失敗キューを遅らせる(–delay)
php artisan queue:work --delay=10
指定するのは秒数。
メンテンナンス・モードでもキューを実行する(–force)
php artisan queue:work --force
最大メモリーを指定する(–memroy)
php artisan queue:work --memory=128
指定する単位はメガバイト。
キューが存在しないときのスリープ秒数を指定する(–sleep)
php artisan queue:work --sleep=5
子プロセスが実行できる最大秒数を指定する(–timeout)
php artisan queue:work --timeout=120
失敗キューとみなすまでの実行回数を指定する(–tries)
php artisan queue:work --tries=3
Routeのキャッシュを作成する(route:cache)
php artisan route:cache
「bootstrap/cache/routes.php」にRouteのキャッシュを作成し、ページ表示を高速化します。
Routeのキャッシュを削除する(route:clear)
php artisan route:clear
前項目の「route:cache」で作成されたキャッシュを削除します。
Routeのリストを表示する(route:list)
php artisan route:list
HTTPメソッドで絞り込む(–method)
php artisan route:list --method=post
「get」「post」「put」「delete」などのHTTPメソッドで表示リストを絞り込みます。
Route名で絞り込む(–name)
php artisan route:list --name=logout
Routeリストの表示順を逆にする(–reverse)
php artisan route:list --reverse
スケジュールを実行する(schedule:run)
php artisan schedule:run
セッション用テーブルのマイグレーションを作成する(session:table)
php artisan session:table
ただし、このコマンドはマイグレーションを作成するだけですので、「php artisan migrate」でマイグレーションの実行も忘れないでください。
公開ストレージファイルが使えるようにする(storage:link)
php artisan storage:link
Laravelでは「storage」というファイルの保管庫がありますが、このフォルダ内への公開エリアを作成するコマンドです。(つまり、アップロードした画像などをウェブ上に公開する場合です)
このコマンドを実行すると、「public」フォルダに「storage」というシンボリックリンク(あたかもフォルダが存在しているように見せるリンク)が作成されることになります。
そのため、例えば「https://example.comt/storage/*****.jpg」という風にファイルにアクセスすることができるようになります。
ファイルをPublishする(vendor:publish)
php artisan vendor:publish
例えば、あるパッケージがもつconfigファイルはvendorファルダの中に設置されているため、直接このファイルを変更するべきではありません。なぜなら、今後パッケージが更新されると変更内容が失われてしまうからです。
そのため、このようなファイルはPublish(内容を変更してもいいフォルダにコピー)して使用することになります。そして、それを実行できるのがこのコマンドです。
ちなみに、過去のバージョンのLaravelではこのコマンドを実行すると全てのファイルがPublishされてましたが、現在は以下のように必要なファイルだけを選ぶことができるようになっています。
強制的に上書きする(–force)
php artisan vendor:publish --force
デフォルトでは、すでにPublishされたファイルが存在している場合はスキップされるようになっていますが、「–force」オプションをつけると強制的に上書きすることになります。(つまり、今までの変更は全て失われる)
すべてのファイルをPublishする(–all)
php artisan vendor:publish --all
選択プロンプトを表示させず、無条件で全てのファイルをPublishするオプションです。
タグを指定してPublishする(–tag)
php artisan vendor:publish --tag=migrations
ビューのキャッシュを作成する(view:cache)
php artisan view:cache
このコマンドを実行すると「storage/framework/views」内に全ビューのキャッシュ(つまり、BladeテンプレートをHTML&PHP化したもの)を作成することができ、ページ表示の高速化をすることができます。
ビューのキャッシュを削除する(view:clear)
php artisan view:clear
前項目で作成されるキャッシュを削除するコマンドです。
おわりに
今回、全てのartisanコマンドをまとめてみたところ、個人的にも今まで知らないものが含まれていることに気が付きました。きっと今後の開発で生産性をあげられることと思います。
みなさんもぜひ活用してみてくださいね。
ではでは!