【独学メモ】-Laravelの設定 DB周り-

# 前書き
この記事は自分のための学習アウトプットメモです。
職場でphpを利用してシステムを運用しているので、ある程度の知識を得ておきたいと思い学習を開始しているだけなので、どうぞ暖かく見守ってくれたら嬉しいです。

# この記事の目的
MAMPでphpMyAdminのDBとLaravelの接続を行うことを目的とした記事でございます。
主な作業工程はこんな感じ。

0. まずは準備
1. データベースを作成する
2. データベースに接続するためのユーザーを作成する
3. \.envファイルにDBへ接続するための内容を記載する
4. 接続を確認する（=migrateを実行する）

# 実際にやってみる
さっそくやってみましょう。
まずは準備。
## 0. まずは準備。
実際に接続を行うために、まずはMAMPの起動とMySQLのポートを確認しておくよ。

### 0-1.まずはMANPを起動しておく。
そうしないとphpMyAdminも参照できない。

### 0-2.port番号を控えておく
MySQLのポート番号を控えておく。
工程3で使うよ。

#### 確認方法
1. MAMPの`Preferences`をクリックする
![スクリーンショット 2023-04-09 14.49.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593458/95bc6296-63d8-5ace-1f4c-71c096ec4888.png)

2. Portsトグルをクリックすると、portの番号が確認できる。これを控えておく。
![スクリーンショット 2023-04-09 14.50.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/593458/ed46c425-e640-5bd8-c21b-656f6bbc357f.png)

## 1. データベースを作成する
MAMPを起動すると、ブラウザ上からphpMyAdminを閲覧できるようになるよ。
そこからDBを作成しましょ。

### 1-1. phpMyAdminを表示する
`http://localhost/MAMP/`にアクセスすると、Welcome to MAMPページが表示される。
ヘッダーに表示されている`Tool`をクリックするとメニューが表示されるので`phpMyAdmin`をクリックする。
→ そうるすと別タブでphpMyAdminが表示される

### 1-2.　さっそくDBを作る
1. 左サイドメニューの先頭に表示された`新規作成`リンクをクリックする
→ メインフレームが「データベース作成」画面に切り替わる
2. `データベースを作成する`文言下部の入力フォーム（プレースホルダーで`データベース名`と表示されてる場所）に好きなDB名(※）を入力する
文字コードの指定は一旦、`utf8_general_ci`のままでいいと思う。
そして`作成`ボタンをクリックすれば、作成完了（左サイドメニューの中に作成したDBが追加されるはず）
:::note info
※DB名について
DB名を考える時、複数の単語を並べる時はスネークケースにしましょ。
例） 
item_image -> ◯
itemImage -> ×
ItemImage -> ×
:::

## 2. データベースに接続するためのユーザーを作成する
作成したDBへの接続を試みるためには、DBへのアクセス権限を保有しているアカウントで接続する必要があるんす。
なので、まずは接続できるアカウントを用意しやす。

1. 左サイドメニューから先ほど作ったDBをクリックする。（メインフレームが「DB詳細」画面に切り替わる）
2. ヘッダーに'権限'タブがあるので、それをクリックする。
3. 画面内下部に`ユーザーアカウントを追加する`リンクが表示されているので、それをクリックする
4. ログイン情報を入力する
ユーザー名:（キャメルケースで)
ホスト名：`すべてのホスト`
パスワード:任意のパスワード
再入力:パスワードの再入力
認証プラグイン:そのまま
パスワードを生成する:一旦無視
ユーザーアカウント専用データベース：`データベース{作ったDB名}へのすべての権限を与える`にチェック。
グローバル権限: `すべてチェックする`にチェック。
※サービス公開とかしない前提なのでガバガバな設定。サービス公開とかそういうのある場合はしっかり権限は考えて設定しないとね。
5. 画面下部の`実行`をクリックしてユーザーアカウント作成を完了させる

## 3. \.envファイルにDBへ接続するための内容を記載する
phpMyAdmin側でDBと、そのDBにアクセスできるアカウントを用意したので、今度はlaravel側で、そのアカウントを使ってDBに接続できるように設定をする必要がありけり。

エディタで`/{プロジェクト名}/\.envファイル`を開いて、DBに関連する記載のある場所を探して書き換える

DB_PORT : `0-2.port番号を控えておく` で控えた数値
DB_DATABASE : `1-2.　さっそくDBを作る` で作成したDB名
DB_USERNAME : `2. データベースに接続するためのユーザーを作成する` で作成したアカウントの名前
DB_PASSWORD : `2. データベースに接続するためのユーザーを作成する` で作成したアカウントのパスワード

```.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=※※※※
DB_DATABASE=※※※※
DB_USERNAME=※※※※
DB_PASSWORD=※※※※
```

## 4. 接続を確認する（=migrateを実行する）
さて、ここまできたら、接続できるはず・・・。
さっそくやってみましょ。

1. サーバーを止める
前書いた[記事のここの内容](https://qiita.com/dr_tensyo/items/e651989ab2a17739efb1#4%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E6%AD%A2%E3%82%81%E3%82%8B)を実行してサーバーを止める。

2. ターミナル上で以下を実行する
```ターミナル
php artisan migrate
```
`Pcreating migration table ..... DONE`　がターミナル上に表示されていればOK。

:::note info
laravel導入時にテンプレで作成されているmigrationファイルをこの時実行することで、DB接続+テンプレのマイグレーションを実行している
migrationファイルのありかは`{プロジェクト名}/database/migrations`内にあって、ここにあるファイルがこのタイミングで実行されている
:::

## 5. 念のため
サイド、phpMyAdminを開いて、作成したDBの中身を確認しに行くと、`{プロジェクト名}/database/migrations`配下にあるファイルの`yyyy_mm_dd_※※※※※※※※※_create_※※※※※_table.php`というファイル名に該当するテーブルが作成されているはずなので、それも確認しておくといいかも。

## 最後に
基本的に自分向けのメモなので、参考にする方やみたれる方はいらっしゃらないと思いますが、
もしどなたか有識者がこの記事を目にして「あ、いやなんかそこ認識違うぞ」と思う箇所あればご指摘いただければ幸いですm(_ _)m
（そのためにあえてこの駄文を公開設定しているので・・・笑)