-
whereHasメソッドの基本的な使用方法:
$posts = Post::whereHas('tags', function ($query) { $query->where('name', 'like', '%laravel%'); })->get();
上記のコードでは、"tags"というリレーションシップを持つ"Post"モデルのインスタンスを取得しています。"tags"リレーションシップの条件に基づいて、"name"カラムが"laravel"を含むタグを持つ投稿のみをフィルタリングしています。
-
whereHasメソッドと他のクエリビルダのメソッドの組み合わせ:
$posts = Post::whereHas('tags', function ($query) { $query->where('name', 'like', '%laravel%'); })->orderBy('created_at', 'desc')->take(10)->get();
上記の例では、whereHasメソッドを使用してタグに基づいてフィルタリングした後、作成日時の降順で最新の10件の投稿を取得しています。
-
whereHasメソッドとorWhereHasメソッドの組み合わせ:
$posts = Post::whereHas('tags', function ($query) { $query->where('name', 'like', '%laravel%'); })->orWhereHas('categories', function ($query) { $query->where('name', 'like', '%framework%'); })->get();
上記の例では、"tags"リレーションシップまたは"categories"リレーションシップの条件に基づいてデータをフィルタリングしています。
これらはwhereHasメソッドを使用したデータのフィルタリングと関連付けの一部の例です。Laravelではさまざまなリレーションシップのタイプと組み合わせてさまざまな条件でデータをフィルタリングできます。適切なリレーションシップと条件を選択して、必要な結果を得るためにwhereHasメソッドを活用してください。