目次
1. 機能一覧
2. テーブル設計
3. 工夫した点
4. 振り返り
① 機能一覧
ユーザー登録 / ログイン
・Hash::make()でパスワードをハッシュ化
・Auth::attempt()でユーザー認証
TOPページ (ブログ一覧)
・全ユーザーのブログを表示
・絞り込み機能(キーワード、日付、カテゴリ)
ブログ詳細ページ (TOPページから移動したとき)
・コメント機能
Blog::with('comments') でEager Loadingを実施し、N+1クエリ問題を防止
・お気に入り機能(♡を押すとお気に入りページに追加される)
マイページ
・Auth::id()で認証ユーザーのIDを取得しブログを表示
・公開非公開機能
ブログ詳細ページ (マイページから移動したとき)
・Auth::id() を使用して、認証されたユーザーだけがブログのCURD機能が可能
お気に入りページ
ユーザーが気に入ったブログだけを閲覧できるよう設計
② テーブル設計
③工夫した点
公開・非公開機能
ワンクリックでブログの状態を管理可能。statusカラムを使用し、0(非公開)と1(公開)の2つの値でブログの状態を管理。
お気に入り機能
attach() や detach() メソッドを使用して、ユーザーが気に入ったブログをボタン一つでお気に入りの状態を切り替え可能。
④ 振り返り
学んだこと
1. ユーザーの認証とアクセス管理
・セキュリティ強化:Hash::make() でパスワードをハッシュ化し、平文保存を防止。またAuth::attempt() で安全な認証プロセスを実現 。
・アクセス制御:Auth::id()を使用し、ログインユーザーのIDを取得し、ブログのCURD機能などの権限や表示範囲などを、投稿者ごとに適切に管理。
2. 多対多のリレーション設計
中間テーブル(blog_category や favorite)を活用し、ユーザー、ブログ、カテゴリ間の多対多リレーションを効率的に管理。belongsToMany メソッドを使用することで、カテゴリ機能やお気に入り機能を実装。
GitHub