-
単純なリレーションシップの場合:
$posts = Post::whereHas('comments', function ($query) { $query->where('approved', true); })->get();
この例では、
Post
モデルとComment
モデルの間にリレーションシップがあります。whereHas
メソッドを使用して、comments
リレーションシップの条件として、approved
カラムがtrue
であるコメントを持つ投稿を取得しています。 -
ネストされたリレーションシップの場合:
$posts = Post::whereHas('comments.user', function ($query) { $query->where('active', true); })->get();
この例では、
Post
モデルとComment
モデルの間にリレーションシップがあり、さらにComment
モデルとUser
モデルの間にもリレーションシップがあります。whereHas
メソッドを使用して、comments
リレーションシップとその内部のuser
リレーションシップの条件として、active
カラムがtrue
であるコメントを持つ投稿を取得しています。
これらは一部の例ですが、異なるシナリオに応じてwhereHas
メソッドを使用してクエリをカスタマイズできます。Laravelの公式ドキュメントには、さらに詳しい情報が記載されていますので、参考にすることをおすすめします。