J'ai une méthode d'étendue de requête qui filtre les résultats sur un modèle FOO par l'auteur du modèle. La complication est que l'auteur n'est pas directement lié.
FOO appartient à la barre et à la barre appartient à l'utilisateur. Si FOO appartenait à l'utilisateur, je pouvais juste faire cela: p> Ceci ne fonctionnera évidemment pas car le modèle FOO n'a pas de colonne user_id et a plutôt une colonne bar_id. Cependant, je ne suis pas sûr de savoir comment je peux construire la requête d'une manière qui filtrerait l'user_id. P> Tous les pointeurs? P> P>
3 Réponses :
trouvé une solution:
J'ai posté une réponse au Laravel, veuillez également vérifier cela.
C'est mieux que possible, car il utilise index de table et travailler plus efficace, mais n'oubliez pas d'ajouter -> Sélectionnez ("Utilisateurs. *") Sinon Laravel peut vous donner "ID" ou tout autre champ de la mauvaise table, et pas d'erreur. sera jeté.
C'est mieux si vous êtes coincé avec MySQL. Les autres moteurs peuvent en résulter des erreurs sur ces requêtes. OP n'a jamais mentionné quel moteur DB il utilise.
Vous pouvez également faire cela à l'aide de relations (sans recourir à des jointures manuelles): edit: utilise maintenant EDIT: Dans 4.2, la syntaxe de l'où a changé, de sorte que le nom de la relation est paramètre 1 et la fermeture est le paramètre 2 (plutôt que d'être transmis comme une matrice): < / p> où code> au lieu de
avec code> > (Laravel> = 4.1 seulement). Merci pour la correction ARDA. P>
Cela n'affectera pas le filtrage principal de la requête, mais il ne s'agira que d'affecter les résultats en relation.
Merci pour la correction concernant l'utilisation de où code> au lieu de
avec code> pour affecter la requête principale.
Vous pouvez utiliser Supposons que vous avez un Plus d'infos: ici P > p> où () code> dans les champs de requête pour interroger les relations.
utilisateurs () code> fonction de relation dans ce modèle. Ensuite, ce serait quelque chose comme ceci: p>
où code> déclarations: si le courant
FOO code> a une relation nommée
bar code> et
bar code> a une relation appelée
utilisateurs code>, ce serait comme ceci: p>
La question a demandé une solution où FOO appartient à la barre et à la barre appartient à l'utilisateur. Votre réponse suppose que FOO appartient directement à l'utilisateur.