Laravel - Éloquent “A”, “Avec”, “WhereHas” - Que signifient-ils?
J'ai trouvé le concept et la signification derrière ces méthodes pour être un peu déroutant, est-il possible pour quelqu'un de m'expliquer quelle est la différence entre has
et with
est, dans le contexte d'un exemple (si possible)?
Vous devez vous connecter pour publier un commentaire.
Avec
with()
est pour désireux de chargement. Que signifie fondamentalement, le long de la principale du modèle, Laravel va précharger les relation(s) que vous spécifiez. Ceci est particulièrement utile si vous avez une collection de modèles et vous souhaitez charger un rapport pour chacun d'eux. Car avec impatient de chargement vous exécutez une DB requête au lieu d'un pour chaque modèle de la collection.Exemple:
User > hasMany > Post
A
has()
est de filtrer la sélection de modèle basé sur une relation. Donc, il agit de façon très similaire à une normale de la condition where. Si vous venez d'utiliserhas('relation')
cela signifie que vous ne voulez obtenir les modèles qui ont au moins un modèle dans cette relation.Exemple:
User > hasMany > Post
WhereHas
whereHas()
travaille essentiellement la même quehas()
mais vous permet de spécifier des filtres supplémentaires pour le modèle associé à vérifier.Exemple:
User > hasMany > Post
with('relation')
comprendra la table liée dans la collection retournée,has('relation')
etwhereHas('relation')
sera pas inclure la table de données. De sorte que vous aurez besoin de faire appel à la foiswith('relation')
ainsi quehas()
ouwhereHas()
.whereHas
sur la relation de l'utilisateur lors de l'interrogation de la poste.