僕がよく使うartisanコマンド一覧

# 僕がよく使うartisanコマンド一覧

  「よく使う」とか言いながら、何だっけってよく調べてる。


## バージョン（version）
```terminal
$ php artisan --version
Laravel Framework 5.6.14
```

## 一覧表示（list）

```terminal
$ php artisan list
・・・コマンドがいっぱい・・・
```

## 利用方法検索（help）
```terminal
$ php artisan help 調べたいコマンド
```
↓こんな感じ。

```terminal
$ php artisan help make:controller
Usage:
make:controller [options] [--] <name>

Arguments:
  name                   The name of the class

  Options:
   -m, --model[=MODEL]    Generate a resource controller for the given model.
   -r, --resource         Generate a resource controller class.
   -p, --parent[=PARENT]  Generate a nested resource controller class.
       --api              Exclude the create and edit methods from the controller.
   -h, --help             Display this help message
   -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:
  Create a new controller class
  ```

## 起動（serve）
```terminal
$ php artisan serve
Laravel development server started: <http://127.0.0.1:8000>
・・・↓アクセスするとこういうのが表示される・・・
[Fri Mar 30 15:25:54 2018] 127.0.0.1:52385 [200]: /favicon.ico
```
ちなみに既に起動していると`(reason: Address already in use)`で弾かれます。当然ですね。

```terminal
$ php artisan serve
Laravel development server started: <http://127.0.0.1:8000>
[Fri Mar 30 15:24:19 2018] Failed to listen on 127.0.0.1:8000 (reason: Address already in use)
$
```

### ホストやポートを指定して起動
```terminal
$ php artisan serve --host=127.0.0.1 --port=8000
```
利用できない指定をすると`reason: Can't assign requested address`が出ます。
エラーメッセージが親切で嬉しいですね。

## アプリケーションの命名（app）
デフォルトの名前空間`App`を変えてニヤニヤしたい方はこちら。

```terminal
$ php artisan app:name MyApp
Application namespace set!
The compiled services & packages files have been removed.
```
↑この例だと`MyApp`に変更。

## ルート一覧（route）
```terminal
$ php artisan route:list
+--------+----------+----------+------+---------+--------------+
| Domain | Method   | URI      | Name | Action  | Middleware   |
+--------+----------+----------+------+---------+--------------+
|        | GET|HEAD | /        |      | Closure | web          |
|        | GET|HEAD | api/user |      | Closure | api,auth:api |
+--------+----------+----------+------+---------+--------------+
```

## make系
↓大体この形。

```terminal
$ php artisan meke:作りたい種類 ファイル名 --オプション
```

### Controller
```terminal
$ php artisan make:controller MyController
Controller created successfully.
```

#### リソースコントローラ
典型的な「CRUD」ルートが備わったコントローラの作成がしたい場合はこちら。

```terminal
$ php artisan make:controller HogeController --resource
Controller created successfully.
```
さらにリソースモデルを指定したい場合はこちら。

```terminal
$ php artisan make:controller HogeController --resource --model=Hoge
```
この時モデルがないと新しく作るか聞かれます。

```terminal
$ php artisan make:controller HogeController --resource --model=Hoge

A App\Hoge model does not exist. Do you want to generate it? (yes/no) [yes]:
> y

Model created successfully.
Controller created successfully.
```

#### APIコントローラー
  上記のリソースコントローラから描画用のメソッド(createとedit)を除いたAPI向けのコントローラを作る場合はこちら。

```terminal
$ php artisan make:controller HogeController --api
Controller created successfully.
```

### Model
```terminal
$ php artisan make:model Hoge
Model created successfully.
```

#### 全部乗せ
モデル用のリソースコントローラもマイグレーションもファクトリも欲しい腹ペコの皆さんはこちら。

```terminal
$ php artisan make:model Hoge --all
Model created successfully.
Factory created successfully.
Created Migration: 2018_03_30_162214_create_hoges_table
Controller created successfully.
```

全部はいらないけど、という方のトッピングメニューはこちら。

- `--controller`
- `--resource`
- `--factory`
- `--migration`

### Migration
```terminal
$ php artisan make:migration create_hoges_table
Created Migration: 2018_03_30_163027_create_hoges_table
```
上記のようにオプション無しで`create_[テーブル名]_table`とすると、
`Schema::create('テーブル名', ・・・)`が自動的に生成されます。
`--create`オプションを利用した場合も同様。
ちなみに、
モデルの命名は`make:model`の際は単数形、
`make:migration`の際は複数系です。

#### 定義変更
テーブル作成じゃなくて制約つけたりごにょごにょするためのマイグレーションファイルが欲しいんだという方はこちら。

```terminal
$ php artisan make:migration alter_hoges_table --table=hoges
Created Migration: 2018_03_30_163521_alter_hoges_table
```
`--table`オプションを使うと`Schema::table('hoges', ・・・)`が生成されます。

### Seeder
```terminal
$ php artisan make:seeder HogesTableSeeder
Seeder created successfully.
```

## マイグレーションとシーディングの実行

### マイグレーション
```terminal
$ php artisan migrate
Migrating: 2018_03_30_163027_create_hoges_table
Migrated:  2018_03_30_163027_create_hoges_table
```

### シーディング
```terminal
$ php artisan db:seed
Seeding: HogesTableSeeder
```

### 合わせ技
```terminal
$ php artisan migrate:fresh --seed
Dropped all tables successfully.
Migration table created successfully.
Migrating: 2018_03_30_163027_create_hoges_table
Migrated:  2018_03_30_163027_create_hoges_table
Seeding: HogesTableSeeder
```
`migrate:fresh`はテーブルを全部消した後にマイグレーションファイルを実行。
`--seed`はシーディングを実行。
テーブル消す必要はないよ、という場合はこちら

```terminal
$ php artisan migrate --seed
```

## 最後に

結局`list`と`help`で大抵のことは解決するんですけどね。
その他便利なおすすめコマンドがあれば教えてください。
おしまい。