==== # Laravel Eloquent リレーションシップの実際の使用例 ## 機能:Eloquent リレーションシップ(belongsToとhasMany) ブログシステムを例に、Laravelの強力なEloquentリレーションシップ機能を説明します。 ## 実世界のシナリオ:ブログ記事とコメント管理システム ### モデルの定義 ```php // app/Models/Post.php hasMany(Comment::class); } // 1つの投稿は1人のユーザーに属する public function author() { return $this->belongsTo(User::class, 'user_id'); } } // app/Models/Comment.php belongsTo(Post::class); } // 1つのコメントは1人のユーザーに属する public function author() { return $this->belongsTo(User::class, 'user_id'); } } ``` ### コントローラーでの使用 ```php // app/Http/Controllers/PostController.php findOrFail($id); return view('posts.show', compact('post')); } // 新しいコメントを追加 public function addComment(Request $request, $postId) { $post = Post::findOrFail($postId); $post->comments()->create([ 'user_id' => auth()->id(), 'content' => $request->content ]); return redirect()->back()->with('success', 'コメントが投稿されました'); } // コメント数でフィルタリング public function popular() { $popularPosts = Post::withCount('comments') ->having('comments_count', '>', 10) ->orderBy('comments_count', 'desc') ->get(); return view('posts.popular', compact('popularPosts')); } } ``` ### ビューでの表示 ```blade {{-- resources/views/posts/show.blade.php --}}
{{ $comment->content }}
{{ $comment->created_at->diffForHumans() }}