MAMP Laravel MySQLで簡易SNS作成

### 背景・前書き

Laravelもphpも触ったことのない超初心者で、Laravelの仕様（仕組みやライフサイクルなど）を全く理解しておらず、チュートリアルすらやったことがないですが、実際に何かを作ることでなんとなくの雰囲気を把握するために挑戦しました。

基本的に以下のサイトを参考に実装いたしました。こちらの記事をベースに、Laravel9、また自分の環境との差分を備忘録的に書いています。

https://qiita.com/n_oshiumi/items/8993ab268209d19f052e

また、Laravel8.x以降では仕様が変更している部分が多く、時系列的に遭遇したエラーを記載していますので、一度本記事を全て読んでから、私と同じ轍を踏まないようにすることをおすすめします。

Javaなどを先に学んでいる方は理解しやすいと思いますが、MVCモデルとなっているため、同様にModel,ControllerなどやView（画面部分）を作成する流れになります。
ただJavaのプロジェクトとは異なり、ルーティングを行い、URLの飛び先を指定します。

https://codelikes.com/laravel-routing-summary/#:~:text=Laravel%E3%81%A7%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%AF%E7%89%B9%E5%AE%9A,%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%81%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82

### 環境
・Mac M1
・Laravel 9
・php 8.2.0
・Composer version 2.5.1
・エディタ　：　Visual Studio Code

### 環境構築
詳細は別記事をご参照ください

https://qiita.com/pocky_tabemasu/private/65c54c059690965d55b3

~~~.ターミナルでの操作
//データベース作成
create database 'データベース名';
//ユーザー作成
create user 'ユーザー名'@'ホスト名' identified by 'パスワード';  --今回ホスト名はlocalhostにしています。
~~~

.envファイルの編集（VScodeを使用しましたがお好きなエディタなどでどうぞ）
~~~.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=データベース名
DB_USERNAME=ユーザー名
DB_PASSWORD=パスワード
~~~

config/app.phpの編集

~~~config/app.php
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
~~~

### 遭遇したエラー
#### ログイン機能作成時
Laravel6より下記コマンドが使用できません。
~~~
php artisan make:auth
~~~

そのため下記サイトを参考に実装しました。

https://note.com/koushikagawa/n/n1b5bb4a69514

#### Authが読み込まれないエラー
VScodeの拡張機能を確認してください。

https://qiita.com/AkiYanagimoto/items/047c3492749a407c2ace

#### Controller,Modelへのパスが通らない
~~~
Target class [ExampleController（任意のコントローラー名）] does not exist.
~~~
Laravel8.xかControllerへのルートの記述方法が変更になったようです。
完全修飾パスで書く必要があります。

https://www.tairaengineer-note.com/laravel-error-target-class-does-not-exist/#toc2

https://utubou-tech.com/laravel8-x_error2/#:~:text=%E3%81%BE%E3%81%A8%E3%82%81&text=Controller%E3%81%8C%E5%AD%98%E5%9C%A8%E3%81%97%E3%81%A6%E3%81%84,%E3%81%AB%E3%81%A6%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%E3%80%82

https://utubou-tech.com/laravel8-x_error1/

#### laravel config cache ：　false

よく考えたら当たり前ですが、参考にした記事の冒頭で設定したものが悪さをしています。
~~~.ターミナル
php artisan config:cache
~~~
Laravelの仕組みを勉強する必要があります。
以下のコマンドでなかったことにします。

~~~.ターミナル
php artisan config:clear
~~~

簡単にいうと、キャッシュの設定をLocal環境で開発する際は行う必要がないということのようです。

https://maasaablog.com/development/backend/php/laravel/1054/

https://qiita.com/nasteng/items/eb46d1b525944c586c67

https://rapicro.com/laravel-env-php-artisan-configcache/

#### "The Mix manifest does not exist"
以下コマンド実行後、アプリ再読み込みします。
~~~.ターミナル
npm install
npm run dev 
~~~

#### SQLでエラー
SQLSTATE[23000]: Integrity constraint violation: 1048 Column
→ログインしていなかったため、user_idがnullのままINSERT文を実行していました。

localhost/public で登録し、ログインしてからlocalhost/public/timelineでTweetボタンを押下

### おまけ
.Gitにpushする際、gitignoreがたくさんあってびっくりしました

https://zenn.dev/daifukuninja/articles/4912fb5a85c2ec


### その他参考サイト
Laravel9.x 公式マニュアル（日本語版　翻訳中）

https://readouble.com/laravel/9.x/ja/installation.html

https://tsunelab-programming.com/laravel-auth#toc3

https://zenn.dev/antez/articles/a9d9d12178b7b2

https://qiita.com/yukibe/items/0af932cc38ddab42edc2

間違いや不明点、もっとこうした方がいいなどのアドバイスを賜りたく存じますため、お気軽にコメントしてくださると嬉しいです。