ホームページ > データベース > mysql チュートリアル > Laravel のヒント: whereHas または whereRelation?

Laravel のヒント: whereHas または whereRelation?

Barbara Streisand
リリース: 2025-01-17 12:02:12
オリジナル
117 人が閲覧しました

Laravel Eloquent の詳細: whereRelation とその実用的なアプリケーションの探索

この投稿では、Laravel の Eloquent ORM について説明し、whereRelation メソッドに焦点を当て、古い whereHas メソッドと比較します。その長所と限界を検討し、最適な使用法をご案内します。

シナリオ: 完了した注文を持つユーザーを取得します。 Laravel 8 より前は、whereHas が関連するテーブル列をクエリするための標準でした。 Laravel 8 では whereRelation が導入され、より簡潔な構文が提供されました。

Laravel Tip: whereHas or whereRelation?

改善された構文は間違いなくきれいになりました!

パフォーマンスと制限: よくある誤解は、whereRelationwhereHas よりも優れているということです。 ただし、分析により、どちらも同一の SQL クエリを生成することが判明しました:

whereHas クエリ:

<code class="language-sql">select * from `users` where exists 
  (
    select * from `orders` 
    where `users`.`id` = `orders`.`created_by` 
    and `status` = ? 
    and `orders`.`deleted_at` is null
  ) 
and `users`.`deleted_at` is null</code>
ログイン後にコピー
ログイン後にコピー

whereRelation クエリ:

<code class="language-sql">select * from `users` where exists 
  (
    select * from `orders` 
    where `users`.`id` = `orders`.`created_by` 
    and `status` = ? 
    and `orders`.`deleted_at` is null
  ) 
and `users`.`deleted_at` is null</code>
ログイン後にコピー
ログイン後にコピー

主な違いは機能にあります。 whereRelation は関連テーブルの単一の条件に限定されますが、whereHas は単一のサブクエリ内で複数の条件をサポートします。 whereRelation は条件ごとに個別のサブクエリを作成するため、複数の条件に対して非効率的になります。

Laravel Tip: whereHas or whereRelation?

適切な Eloquent メソッドを選択することは、コードの可読性と効率性にとって非常に重要です。 whereHas または whereRelation を選択する前に、クエリの複雑さを考慮してください。 コーディングを楽しんでください! ?

以上がLaravel のヒント: whereHas または whereRelation?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート