0
0

More than 1 year has passed since last update.

MAMP Laravel MySQLで簡易SNS作成

Last updated at Posted at 2023-02-16

背景・前書き

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

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

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

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

環境

・Mac M1
・Laravel 9
・php 8.2.0
・Composer version 2.5.1
・エディタ : Visual Studio Code

環境構築

詳細は別記事をご参照ください

.ターミナルでの操作
//データベース作成
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

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

Authが読み込まれないエラー

VScodeの拡張機能を確認してください。

Controller,Modelへのパスが通らない

Target class [ExampleController(任意のコントローラー名)] does not exist.

Laravel8.xかControllerへのルートの記述方法が変更になったようです。
完全修飾パスで書く必要があります。

laravel config cache : false

よく考えたら当たり前ですが、参考にした記事の冒頭で設定したものが悪さをしています。

.ターミナル
php artisan config:cache

Laravelの仕組みを勉強する必要があります。
以下のコマンドでなかったことにします。

.ターミナル
php artisan config:clear

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

"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がたくさんあってびっくりしました

その他参考サイト

Laravel9.x 公式マニュアル(日本語版 翻訳中)

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0