Laravel Valet でgit cloneしたアプリの開発環境を構築する方法

# 設定方法
### Laravel環境構築(参考記事)
* Valet：[公式](https://laravel.com/docs/11.x/valet)
* Valet：[記事](https://reffect.co.jp/laravel/laravel-valet-install

## 手順
Valetのインストールの為に必要なHomebrewとcomporserの準備
```
# Valetのインストール
# Homebrewのインストール
brew update
brew install php
composer global require laravel/valet
valet install

```
### 補足 composerのインストールについて
```composer -V```このコマンドでインストールが確認出来ない場合、以下公式からインストールを行う
* https://getcomposer.org/download/

上記手順でvalet installまで出来たら、次に以下を実行する
```
git clone https://github.com/your-repo/your-laravel-app.git myapp
cd myapp
composer install
npm install
```

## .env ファイルの設定
プロジェクトディレクトリに移動し、.env ファイルを作成・編集します。
```
cp .env.example .env
```
次に、アプリキーを生成します。
```
php artisan key:generate
```

## Valet でプロジェクトを公開
プロジェクトディレクトリ(今回の例ではcloneしたmyappディレクトリ)に移動し、以下のコマンドを実行します。
```
valet link myapp
```
すると http://myapp.test でアクセスできるようになります。

### ☝️ここでワンポイント
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670884/96a2174d-8da6-0fb9-baae-e5727ba9cdc2.png)

valet linkを実施すると上記URLでのアクセスが後述のnpm run dev後可能になります。
npm run devの時に表示されるURLは.envのAPP_URLに記載のURLが表示されます（デフォルトはhttp://localhost :上記添付参照)。ここで表示されるURLと公開した http://myapp.test は表示が統一されませんが、開発環境では.envのAPP_URLの設定はデフォルトのままでも http://myapp.test で表示できます。
しかし、APP_URL は、url() ヘルパーや asset() ヘルパーなどが生成するURLの基盤として使用されます。

例えば、メールで送信するURLや、Laravelの設定でURLを明示的に使いたい場合に影響します。これを変更しておくことで、アプリケーションの中で生成されるURLが正しくなる場合があります。
■結論
Valetを使っている場合は、APP_URL を以下のように設定するのが一般的です：
```
APP_URL=http://myapp.test
```
これにより、url() や asset() のヘルパーが生成するURLが http://myapp.test を基に生成されるようになります。

## データベースのセットアップ（MySQL, MariaDB など）
Valet には mysql もインストール可能ですが、必要に応じて自分で MySQL や MariaDB をインストールしてください。
```
brew install mysql
brew services start mysql
```
MySQL の初期設定を行い、Laravel の .env ファイルにデータベース設定を追加します。

### MySQLの初期設定
まず、MySQLをインストールした後、MySQLの設定を行います。
#### MySQLのインストール（まだの場合）
もし、まだインストールしていなければ、Homebrewでインストールします。
```
brew install mysql
```
インストール後、MySQLサーバを起動します。
```
brew services start mysql
```
#### MySQLにログイン
MySQLのコマンドラインにアクセスするために、以下のコマンドを実行します。
```
mysql -u root
```
ここでは root ユーザーでログインしていますが、初期設定ではパスワードは設定されていない場合があります。もしパスワードが設定されていない場合はそのままアクセスできます。
■パスワードを設定している場合は以下を実行後、パスワードを入力
```
 mysql -u root -p
```
#### データベースの確認
```
SHOW DATABASES;
```

#### データベースの作成
Laravelで使用するデータベースを作成します。例えば、myapp という名前のデータベースを作成する場合は、次のようにコマンドを実行します。
```
CREATE DATABASE myapp;
```

#### ユーザーの作成（オプション）
もし特定のユーザーを作成して、そのユーザーにデータベースのアクセス権限を与えたい場合は、以下のようにします。
```
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON myapp.* TO 'myuser'@'localhost';
FLUSH PRIVILEGES;
```
これにより、myuser というユーザーが myapp データベースに対してすべての権限を持つようになります。

### Laravelの.envファイルにデータベース設定を追加
次に、Laravelの.envファイルにデータベース接続情報を追加します。

#### .envファイルの編集
プロジェクトのルートディレクトリにある .env ファイルをエディタで開きます。以下のように、データベース接続に関する設定を追加または編集します。

**.env**
```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=myuser
DB_PASSWORD=password
```
ここで、以下を自分の環境に合わせて変更します：

* DB_DATABASE: 作成したデータベース名（例: myapp）
* DB_USERNAME: 作成したユーザー名（例: myuser）
* DB_PASSWORD: 作成したユーザーのパスワード（例: password）

#### 設定例
例えば、データベース名が myapp、ユーザー名が myuser、パスワードが password の場合、.env ファイルは以下のようになります：
```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=myuser
DB_PASSWORD=password
```




#### .envのキャッシュをクリアする
.env ファイルを変更した後に特別な「更新コマンド」を叩く必要はありませんが、いくつかの確認やキャッシュをクリアする作業を行った方が良い場合があります。以下の手順を試すと確実です。
```
php artisan config:clear
php artisan cache:clear
```
* php artisan config:clear: 設定キャッシュをクリア
* php artisan cache:clear: 全体のキャッシュをクリア
これにより、Laravelが最新の.envファイルを正しく読み込むようになります。

### 設定が正しいか確認
設定を保存したら、次にLaravelのマイグレーションを実行して、データベース接続が正しく動作しているか確認します。
```
php artisan migrate
```
マイグレーションが正常に完了すれば、データベース接続は成功しています。もしエラーが出た場合は、.envファイルの設定を再度確認してください。

### MySQLの停止（オプション）
開発が終わったら、MySQLサービスを停止することもできます。例えば、Homebrewを使っている場合は以下のコマンドで停止できます。
```
brew services stop mysql
```

## サーバー起動
```
npm run dev
```

## 動作確認
ブラウザで http://myapp.test にアクセスし、Laravel のウェルカムページが表示されれば成功です。


# 動作確認が終わった後にする事
## php artisan migrate(まだ実行していなければ)
以下を実行して、テーブル情報を生成します。
```
php artisan migrate
```

さらに、テーブルの情報が用意されていれば以下を実行し、DBに情報を登録します。
```
php artisan db:seed
```

これで、テストデータが確認出来るようになります。