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