久しぶりにLaravel触ろうとしてすっかり忘れてた [Mac]

##久しぶりにLaravel触ろうとしてすっかり忘れてたので入力コマンドを一覧にしてみた
※諸事情によりLaravel6系でやります。
Laravelのサポートについては[こちら](https://blog.capilano-fw.com/?p=7799)の方が詳しく説明されています。

・構築環境
os: mac
エディタ: VSCode
シェル: bash

##目次
> - composerが入っているかの確認
- composerでlaravelインストール
- バージョンを指定してプロジェクトを作成
- laravelの起動を確認
- MySQLの設定
- SQLiteの場合
- laravel日本語化

##composerが入っているかの確認
```terminal:composer
composer -v
```

---
開発環境の構築が必要な場合
###[Homebrew](https://brew.sh/index_ja)インストール

```terminal:Homebrew~composer
# Homebrewインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# composerインストールと確認
brew install composer
composer
```

---
##composerでlaravelインストール
```terminal:composer-laravel
composer global require "laravel/installer"
```
##バージョンを指定してプロジェクトを作成
```terminal:composer-laravel
composer create-project laravel/laravel "プロジェクト名" 6.* --prefer-dist
```
##laravelの起動を確認
※ポートは任意。なくても良い

```terminal:laravel
cd "プロジェクト名"
php artisan serve --port=8080
```
[http://127.0.0.1:8080](http://127.0.0.1:8080)にアクセス

##MySQLの設定
```terminal:MySQL
mysql.server start
mysql -u root -p
# パスを聞かれるがそのまま[enter]
```
```MySQL:MySQLデータベース作成、パスワード設定
create database 'データベース名';
show databases;
use 'データベース名';
# MySQLのバージョンによりどちらか
---
update mysql.user set password=password('パスワード') where user='root';
set password for 'root'@'localhost' = 'パスワード';
---
flush privileges;
exit;
```
```terminal:MySQL再起動
mysql.server stop
mysql.server start
```
.envファイル変更

```env:.env修正
DB_CONNECTION=mysql
DB_HOST=localhost //修正
DB_PORT=3306
DB_DATABASE='データベース名' //修正
DB_USERNAME=root
DB_PASSWORD='パスワード' //修正
```

###＊マイグレーション時にエラーが出る場合

```terminal:エラー内容
Illuminate\Database\QueryException  : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = 'データベース名' and table_name = migrations and table_type = 'BASE TABLE')
```
>データベース接続エラー(権限なし)
MySQL8系の場合、パスワード検証プラグインが「caching_sha2_password」で、PHPのデータベース接続用のPDOドライバが未対応みたいなので「mysql_native_password」に変更
[参考](https://reffect.co.jp/laravel/mysql-laravel-in-mac)

####1 データベースユーザ作成
念の為、制作用ユーザを作るところから

```mysql:ユーザを作成しユーザ権限を与える
# ユーザー作成
mysql> CREATE USER 'ユーザ名'@'localhost' IDENTIFIED BY 'root’;
# ユーザー権限付与
mysql> GRANT ALL PRIVILEGES ON <データベース名>.* TO 'ユーザ名'@'localhost';
```

####2 権限の確認
```mysql:ユーザを作成しユーザ権限を与える
mysql> show grants for 'ユーザ名'@'localhost';
+-------------------------------------------------------------+
| Grants for `ユーザ名`@localhost                                    |
+-------------------------------------------------------------+                    |
| GRANT ALL PRIVILEGES ON `<データベース名>`.* TO `ユーザ名`@`localhost` |
+-------------------------------------------------------------+
```

####3 パスワードの検証プラグインの確認
```mysql:パスワード検証プラグイン表示
mysql> select user, host, plugin from mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| `ユーザ名`         | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
```

####4 パスワードの検証プラグインを変更
```mysql:パスワード検証プラグイン変更
mysql> ALTER USER 'ユーザ名'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';
```
####5 ユーザパスワードの検証プラグインの変更結果を確認
```mysql:パスワード検証プラグイン表示
mysql> select user, host, plugin from mysql.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| `ユーザ名`         | localhost | mysql_native_password |
+------------------+-----------+-----------------------+
```

####6 権限の反映
```mysql:権限の反映
mysql> flush privileges;
```

####7 .envファイル変更

```env:.env修正
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE='データベース名' //修正
DB_USERNAME='ユーザ名' //修正
DB_PASSWORD='パスワード' //修正
```

完了

##SQLiteの場合
```env:.env修正
DB_CONNECTION=sqlite //変更
// DB_DATABASE='データベース名' //コメントアウト
```
```terminal:databaseディレクトリにファイル作成
cd "プロジェクト名"/database
touch database/database.sqlite
```

##laravel日本語化
config/app.phpの修正

```php:app.phpの修正
'timezone' => 'Asia/Tokyo',// タイムゾーン
'locale' => 'ja',          // 第一言語を日本語（ローカライゼーション）
'fallback_locale' => 'en', // 該当言語が見つからない場合の言語
'faker_locale' => 'ja_JP',
```

ここまでで、laravel初期設定は完了です。

##参考
https://qiita.com/park-jh/items/78efe8c3c93cf533aafa
https://qiita.com/S-Masakatsu/items/b231a8a02737aff6a808