Maison >base de données >tutoriel mysql >Astuce Laravel : où est la relation ou où ?

Astuce Laravel : où est la relation ou où ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-17 12:02:12118parcourir

Plongez dans Laravel Eloquent : exploration whereRelation et ses applications pratiques

Cet article explore l'ORM éloquent de Laravel, en se concentrant sur la méthode whereRelation et en la comparant à l'ancienne méthode whereHas. Nous examinerons ses forces et ses limites, vous guidant vers une utilisation optimale.

Scénario : Récupération des utilisateurs avec des commandes terminées. Avant Laravel 8, whereHas était la norme pour interroger les colonnes de table associées. Laravel 8 a introduit whereRelation, offrant une syntaxe plus concise.

Laravel Tip: whereHas or whereRelation?

La syntaxe améliorée est indéniablement plus propre !

Performances et limites : une idée fausse courante est que whereRelation surpasse whereHas. Cependant, l'analyse révèle que les deux génèrent des requêtes SQL identiques :

whereHas Requête :

<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 Requête :

<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>

La principale différence réside dans la fonctionnalité. whereRelation est limité à des conditions uniques sur la table associée, tandis que whereHas prend en charge plusieurs conditions au sein d'une seule sous-requête. whereRelation créerait une sous-requête distincte pour chaque condition, la rendant inefficace pour plusieurs critères.

Laravel Tip: whereHas or whereRelation?

Choisir la bonne méthode Eloquent est crucial pour la lisibilité et l'efficacité du code. Tenez compte de la complexité de votre requête avant de sélectionner whereHas ou whereRelation. Bon codage ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn