CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [DQL] Ma requete marche mais je ne la comprends pas

DébutPage précedente
1
Page suivantePage suivante
karis karis
MP
Niveau 11
20 mai 2023 à 16:59:58

Bonjour,

Je suis sur un projet symfony qui comporte entre autre une table barbershop, une table user, et une table barbershop_user_like avec barbershop_id et user.id qui me permet de référencer les barbershop likés par chaque user.

Pour récuperer les barbershop likés de chaque user j'ai fait cette requete DQL :

$qb->select('b')
->from('App\Entity\Barbershop', 'b')

->innerJoin('b.likes', 'user')

->where('user.id = :user')
->setParameter('user', $user)
->getQuery();

La ou je ne comprends pas c'est le inner join. Je ne comprends pas comment il fait le lien avec ma table user pour ensuite pouvoir spécifier que le user id doit être égal a : user.

Si quelqu'un peut m'expliquer :hap: Merci :)

Message édité le 20 mai 2023 à 17:00:32 par karis
Jisoo_ripabocou Jisoo_ripabocou
MP
Niveau 5
21 mai 2023 à 22:23:20

Le lien entre la table 'user' et la table 'barbershop' est établi via l'entité Barbershop qui contient une propriété 'likes' qui représente les utilisateurs qui ont aimé le barbershop. Cette propriété est probablement définie comme une relation ManyToMany avec l'entité User.

Lorsque vous exécutez la requête DQL que vous avez fournie, Doctrine effectue une jointure interne (INNER JOIN) entre la table 'barbershop' et la table 'barbershop_user_like' (qui représente la relation ManyToMany), puis une autre jointure interne entre la table 'barbershop_user_like' et la table 'user'. Cette jointure interne se fait automatiquement car Doctrine est capable de comprendre la relation entre les entités grâce à leurs annotations ou configurations.

Ensuite, la clause 'where' est utilisée pour filtrer les résultats en fonction de l'ID de l'utilisateur (specified by ':user'), qui est un paramètre lié à la requête à l'aide de la méthode 'setParameter'.

En résumé, Doctrine est capable de faire le lien entre les tables 'user' et 'barbershop' en utilisant les relations définies dans les entités, et il utilise la clause 'where' pour filtrer les résultats en fonction de l'utilisateur spécifié.

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment