前提
Laravelでアプリを作っていた時に学んだことを殴り書きしていきます。
本題
ミドルウェアとは
アプリケーションへ送信されたHTTPリクエストをフィルタリングする、便利なメカニズムを提供してくれるもの。
ブラウザ経由で来たリクエストをコントローラーに処理が行く前に何らかの処理を追加できる機能。
ログイン認証のミドルウェア。
storeメソッド
Laravelでは慣習的にstoreメソッドはデータをデータベースへ挿入する際、よく使われるメソッド名です。
insertメソッド
insertメソッドはデータベースに新しいレコード(行)を追加するメソッド。
アップロードした画像はハッシュ名(ランダムな名前)で保存したいため、どのレビューとどの画像が紐付くのかをデータベースに保存しておく必要がある。
ハッシュ名で画像を保存する理由としては、セキュリティのため。
わかりやすい名前で保存してしまうと直接URLにアクセスされてしまう等のセキュリティリスクが上がるため、ランダムな名前で保存する。
論理削除
論理削除とは実際にはデータを削除せずに、削除されたと見なすフラッグと呼ばれるカラムを設定することでユーザーには削除しているかのように振る舞わせることを指す。
デバッグ関数 dd()
compactの引数に変数名を指定することでビューで変数が使えるようになる。
foreach(展開したい配列 as 1つずつ取り出した時の変数)
展開したい配列は複数形で書いて、展開したあとの変数は単数形で書くとわかりやすい
get()の代わりにpaginate(数を指定)を使う事で、自動的にページネーションを生成。
RDSの説明
RDSはAWSのデータベースサービス。
RDSを使うことで、開発環境とは異なる構成で本番環境を構築できる。
開発環境ではLaravelとMySQLが同じサーバー内にある。
同じサーバーにある方が管理はしやすいですが、本番環境を想定すると負荷がかかった時に不安がある。
また、データベースを別インスタンスに分けた方が仮に攻撃者に侵入された際のダメージが少なくなる。
さらにアプリケーション(PHP)とデータベースは運用するサービスによって負荷の度合いが異なる。
そのため、あらかじめ分けておいた方が負荷のかかった際にスケーリング(スペックアップなど)がしやすいため、アプリケーションとデータベースを分けるメリットがある。