Artisanとは
ArtisanはLaravelに含まれるコマンドラインインターフェースです。
php artisan
から始まるコマンドを叩くだけで、様々な共通する処理を自動で行ってくれます。
そのため、Laravelを用いた開発において大変重要なものになっています。
はじめはコマンドを叩くことに抵抗を覚えるかもしれませんが、慣れてくるとコマンドを欲してくるようになるので、一つ一つ見ていきましょう!
Artisanで使えるリストとヘルプ
まずLaravelアプリケーションのルートでphp artisan list
とコマンドを叩くと、Artisanコマンドで使えるもののリストが表示されます。便利なものからネタなものまで様々なコマンドが数多く存在します。自分の環境では以下のようになりました。
Laravel Framework 8.21.0
Usage:
command [options] [arguments]
Options:
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
// ...
Available commands:
clear-compiled Remove the compiled class file
db Start a new database CLI session
// ...
また特定のコマンドのヘルプが知りたい場合、php artisan help [options] [--] [<command_name>]
のようなコマンドになります。helpについての詳細が知りたい時php artisan help help
とすると以下のように出力されます。
Description:
Displays help for a command
Usage:
help [options] [--] [<command_name>]
Arguments:
command_name The command name [default: "help"]
Options:
--format=FORMAT The output format (txt, xml, json, or md) [default: "txt"]
--raw To output raw command help
-h, --help Display help for the given command. When no command is given display help for the list command
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
--env[=ENV] The environment the command should run under
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
Help:
The help command displays help for a given command:
artisan help list
You can also output the help in other formats by using the --format option:
artisan help --format=xml list
To display the list of available commands, please use the list command.
起動系
開発環境で簡単にサーバを立ち上げるのに使用します。
php artisan serve
これを用いるとApacheやNginxなどのサーバをベットで用意する必要がなくなります。
注意点として、Descriptionに書いてあるように開発環境向けなので、プロダクション環境では使用してはいけません。
Serve the application on the PHP development server
生成系
make
Artisanコマンドでは、様々なものを自動で生成してくれます。今回はよく使用する5つのコマンドを紹介します。他にもファクトリ、シーダ等の生成コマンドもあり、make
系のコマンドを用いることで、名前空間やクラスの基盤など共通する部分を自ら記述する必要がなくなります。
マイグレーションの生成
テーブルを作成したいときに使用するデータベースマイグレーションを生成します。
ユーザuser
のテーブルを作成したいときは、以下のコマンドになります。(複数形であることに注意してください)
php artisan make:migration create_users_table
このコマンドを実行すると、database/migrations
ディレクトリに、2021_01_25_062410_create_users_table.php
のようなファイルが生成されます。
モデルの生成
Laravelには、データベースの情報を便利に用いられるようにするオブジェクトリレーショナルマッパー(ORM)であるEloquentがあります。
ユーザuser
のモデルを作成したいときは、以下のコマンドになります。(単数形であることに注意してください)
php artisan make:model User
このコマンドを実行すると、app/Models
ディレクトリに、User.php
のようなファイルが生成されます。
必要に応じて--migration
のようなオプションを加えると、同時にオプションのものも生成されます。
コントローラの生成
ある関連するリクエスト処理を一つのクラスにグループ化でき、そのクラスをコントローラと呼びます。
ユーザuser
のコントローラを作成したいときは、以下のコマンドになります。(単数形であることに注意してください)
php artisan make:controller UserController
このコマンドを実行すると、app/Http/Controllers
ディレクトリに、UserController.php
のようなファイルが生成されます。
作成、読み取り、更新、削除のようなCRUDルートを用いたい場合、--resource
オブションを加えると処理するためのメソッド等が用意された状態で生成されます。--model=User
のようなオプションを加えると、そのモデルに合わせてコントローラを生成してくれます。両方用いたユーザuser
のコントローラを作成したいときは、以下のコマンドになります。
php artisan make:controller UserController --resource --model=User
メールを送信するクラスの生成
メールを送信するためのクラスを作成することができます。
例えば、SendMail
というMailのクラスを作成したい場合、以下のコマンドになります。
php artisan make:mail SendMail
SendMailの内容やメールの送受信の設定などを済ませると、
Mail:to($to)->send(new SendMail());
というように、簡潔にメールが送信できるようになります。
コマンドの生成
php artisan
のコマンドを使用するだけでなく、自ら作成することもできます。
コマンドの文字とその内容を記述するコマンドのクラスnewCommand
を生成したい場合、以下のコマンドになります。
php artisan make:command newCommand
マイグレーション系
マイグレーション関連ではマイグレーションファイルを生成するだけでなく、マイグレーションの実行等にも使用できます。
実行
まだ処理していないマイグレーションをすべて実行したいときに使用します。
php artisan migrate
ロールバック
一番新しいマイグレーション操作を戻したいときに、ロールバックをします。
php artisan migrate:rollback
例えば、開発環境で既にusers
、posts
の一連の処理があり、新しくComments
に関する処理を開発しているとします。そのテーブルの仕様変更をしたいとなったときファイルの内容を変更しても、php artisan migrate
では既にマイグレーションされているため、実行されません。php artisan migrate:rollback
を使用すると、Commentsのマイグレーションがロールバックされます。
複数戻したい場合は--step=数字
オプションを加え、全て戻したいときはphp artisan migrate:reset
を使用します。
refresh
一つのコマンドで、全てのマイグレーションをロールバックし、migrate
コマンドを実行してくれます。
php artisan migrate:refresh
fresh
refresh
コマンドと似ているが若干違いがあり、データベースから全てのテーブルを削除した後、migrate
コマンドを実行してくれます。
php artisa migrate:fresh
キャッシュ系
LaravelではController
やRoute
などを変更したときに以前のキャッシュが残り、変更が反映されません。
とりあえず変更点が反映されないときは、こちらを実行すると一気に様々なものをキャッシュしてくれるので、試すべきです。
php artisan optimize
ネタ系
名言
様々な方の名言が表示されます。息抜きに丁度いいかもしれません。
php artisan inspire
自分用備忘録
リソースコントローラ作成
データベースで情報を管理し、リソースコントローラを採用する際のパターンが基本的に同じです。しかしたまにしか作成せず、毎回ドキュメンテーションを読んでしまうので、まとめておきます。
ユーザuser
でリソースコントローラを採用する場合、
php artisan make:model User --migration
php artisan make:controller UserController --resource --model=User
まず一気にモデルとマイグレーションのファイルを作成します。
そして、User
をリソースモデルとして、リソースコントローラのファイルを作成します。
後は適宜、生成された3つのファイルに処理を追加します。
まとめ
もっと詳しく知りたいという方は、Laravelのドキュメンテーションを参考にすることをお勧めします。ここでは紹介していない便利なコマンドが沢山あります。