ホームページ >データベース >mysql チュートリアル >Laravel のヒント: whereHas または whereRelation?
Laravel Eloquent の詳細: whereRelation
とその実用的なアプリケーションの探索
この投稿では、Laravel の Eloquent ORM について説明し、whereRelation
メソッドに焦点を当て、古い whereHas
メソッドと比較します。その長所と限界を検討し、最適な使用法をご案内します。
シナリオ: 完了した注文を持つユーザーを取得します。 Laravel 8 より前は、whereHas
が関連するテーブル列をクエリするための標準でした。 Laravel 8 では whereRelation
が導入され、より簡潔な構文が提供されました。
改善された構文は間違いなくきれいになりました!
パフォーマンスと制限: よくある誤解は、whereRelation
が whereHas
よりも優れているということです。 ただし、分析により、どちらも同一の 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
は条件ごとに個別のサブクエリを作成するため、複数の条件に対して非効率的になります。
適切な Eloquent メソッドを選択することは、コードの可読性と効率性にとって非常に重要です。 whereHas
または whereRelation
を選択する前に、クエリの複雑さを考慮してください。 コーディングを楽しんでください! ?
以上がLaravel のヒント: whereHas または whereRelation?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。