LaravelからMAMPを使ってDBに接続するのに四苦八苦した話

#はじめに
私は初心者です。突っ込みどころありましたら、ご遠慮なくお願いします。

やりたいこと：
Laravelでのウェブアプリのチーム開発にあたって、デプロイする前にローカル開発環境（＝各開発者のPC上の開発環境）を整えたい。ここでの開発環境とは、大きくサーバーとDBのこと。MAMPやLaradockが使えるようでしたが、馴染みのあるMAMPを選択しました。
本トピックに関する記事はググればいろいろ出てくるのですが、正直どれも情報が欠けている部分があって、その通りにやってもうまくいきませんでした。なのでここでまとめらることで、皆さんの作業がスムーズになればいいなと思いまとめてみます。

環境：
Laravel 7（バージョンの調べ方↓）、MAMP 5.7、

```terminal
$ php artisan --version
Laravel Framework 7.26.1
```

#１、LaravelをMAMPを通してサーバーに接続しブラウザで表示する
Laravel自体にはサーバーも内蔵されているので、ブラウザでlocalhost:8000のアドレスと`php aritisan serve`コマンド
でブラウザでページを表示することができます。では、MAMPのApacheサーバーを利用する場合はどうするのでしょうか。
今回の解決策は、シンプルにhtdocs内（/Applications/MAMP/htdocs）にプロジェクト（`laravel new プロジェクト名`コマンドで作成するフォルダとファイル一式）を格納し、localhost:8888/のアドレスで表示することです。

ちなみに8888とは？
MAMPサーバーに割り当てられた登録済みポート番号です。（ポート番号とはコンピュータに割り当てられたIPアドレスが住所だとすると、その中の各ソフトウェアに割り当てられた部屋番号みたいなもの）ちなみに、8888-8889はMAMP、MySQLは3306。こちらのサイトで色々調べられておもしろいです→[PORT INDEX](https://hi-nemos.com/port/?port=8888)

これで`localhost:8888/あなたのプロジェクト名/public`でアクセスして下記ページ（welcome.blade.php）が表示されれば成功しています。
![スクリーンショット 2020-09-02 16.27.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/14dc4b58-99a6-8abd-b1fd-84780761e59e.png)

私はここに来るまでにエラーに直面し四苦八苦しました。teratailで質問し解決したので、こちらからどうぞ。あらゆることを試したのでエラーと格闘している方のお役に立てると思います。
[MAMPでlocalhost:8888に接続しようとするが404 Not Foundになってしまう](https://teratail.com/questions/288997)

#２、phpMyAdminでDBを作成し、Laravelから接続する

###2-1 phpMyAdminで新規DBを作成しておく
ここで付けるデータベースの名前は後々Laravel側での設定で使うので、わかりやすい名前がいいと思います。現段階ではテーブルなど中身を作り込む必要はありません。

###2-2 Laravel側の環境設定を変更する
####(1) .envファイル（環境変数ファイル）を修正する
.envとはenvironmentの略で、Laravelの環境やら設定をいじるファイルみたいです。
ここが私のつまずきポイントの１つでした。「.envファイルってどこにあるの？」っていう...。答えは、意外とどの記事も触れてないのですが「Laravelのプロジェクトフォルダの直下にある。でも隠しファイルなのでFinderで見るときはまず`Command+Shift+.`で隠しファイルを表示させよう。」でした。そうすると出てきますし、もしくはVS Codeの左のExplorer（フォルダやファイルを表示してくれるやつ）でも発見できます。

![スクリーンショット 2020-09-05 11.46.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/70bcc1bd-952b-64f6-db33-1a01e372df13.png)

.envファイルをVS Codeで開きます。
![スクリーンショット 2020-09-02 15.43.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/d3cf4091-3a8e-cd58-8008-2274399480cd.png)
ここがDBの設定なので、このように↓書き換えます。私は、mysqlをmyslqとスペルミスしてエラーが止まず時間を無駄にしました。。。
![スクリーンショット 2020-09-05 11.52.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/d741b180-0942-27f0-464e-bcd69870d534.png)
どこかの記事で
`DB_HOST=localhost`と書き換えよ！と見ましたが、127.0.0.1はlocalhostと同義なので、、、
8889のポート番号はこれまたMAMPのポート番号です。
DB_DATABESE=には先ほど付けたデータベースの名前を。USERNAME, PASSWORD, SOCKETは[MAMPのトップページ](http://localhost:8888/MAMP/)に記載されています（下スクショご参照）。
![スクリーンショット 2020-09-05 12.09.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/c11f45b0-e558-4402-9bbe-79e623aa0091.png)


####(2) database.phpの内容を変更する
/config/database.phpをVS Codeで開きます。18行目くらいが`'default' => env('DB_CONNECTION', 'mysql'),`とMySQLになっていることを確認し（MAMPの3つめのMはMySQLのM。MySQLとはDB管理システムの一つ。）、そのMySQLの設定を見ます↓

![スクリーンショット 2020-09-02 16.36.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/94c817b9-a580-3d79-c74b-613142d5dcfe.png)
このように書き換えます。.envファイルと似てます。

```php
//中略
        'mysql' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '8889'),
            'database' => env('DB_DATABASE', 'jazz_review'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', 'root'),
            'unix_socket' => env('DB_SOCKET', ''), 
//中略
```
unix_socketの第２パラメータに`/Applications/MAMP/tmp/mysql/mysql.sock`と入れる場合もあるのでしょうか。入れなくてもできてます。

####(3)マイグレーション
正直このマイグレーションというのがまだ理解できていないのですが、これがDBと接続するのに必要みたいです。下記コマンドを実行します。

```terminal
$ php artisan migrate
```
`Migration table created successfully.`と出るときちんとDBに接続できているみたいです。（僕の画面はその後にエラー出てますが...）
![スクリーンショット 2020-09-02 21.32.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/189cf722-c90f-1609-fb92-5a62fb79aa50.png)
また、phpMyAdminのDBを見ると、該当DBの中に`failed_jobs, users, password_resets, migrations`というテーブルができていて前者の３つは、/database/migrationsの中にあるファイルにあたります。


####もしエラーが解決できなかったら...
私は当初`php artisan migrate`コマンドがうまくいかず泥沼にハマってました。この原因は先述のmyslqスペルミス問題でのエラーのはずなのですが、それに気づかず「うまくいかない！！」と気が動転しており、色々試していました。それらをまとめてQiitaで質問し解決しているので参考になるかもしれません→[php artisan migrateを実行したいがエラーが解決できない](https://qiita.com/kakudaisuke/questions/cb5c4e962bab12efa8d4)

#最後に
少しでもなにか皆さんのヒントになれば嬉しいです。ご指摘あればバシバシよろしくお願いします。