IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ORM PHP Discussion :

Jointure entre une table et une table intermédiaire est possible ?


Sujet :

ORM PHP

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2020
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Jointure entre une table et une table intermédiaire est possible ?
    Bonjour à toutes et à tous,

    J'ai un projet de Symfony(5.4.9), il y a 4 entity [User, Site, Service, Evenement], j'ai des difficultés pour définir leurs relations.

    1. User (n) ---> Service (n) (ManyToMany)
    2. User (n) ---> Site (n) (ManyToMany)
    3. User (1) ---> Evenement (n) (OneToMany)

    Par exemple:
    Daniel travaille dans Service (vente) de Site ([Lyon, Paris]) et Service (achat) de Site([Paris]), il a publié un Evenement (Promos) sur Service(vente) de Site(Paris).

    Comme Daniel travaille pour Service ([vente et achat]) dans Site([Paris, Lyon]), comment on peut définir Evenement (Promo) lier id_user, id_service et id_site ?

    Mon idée est de créer une table (id, id_user, id_site, id_service) comme une table intermédiaire pour lier avec Evenement (OneToMany).

    Est-ce que c'est possible de créer cette table par Symfony, sinon, créer cette table intermédiaire comme Entity?

    Tous les conseils sont bienvenus.

    Bonne journée

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    Bonjour,
    Vous devriez utiliser un outil tel que https://www.looping-mcd.fr/ créé par un de nos membres, pour vous faciliter le travail.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 397
    Points : 39 932
    Points
    39 932
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Je recommande également l'utilisation d'un logiciel de modélisation et en particulier de Looping pour ses nombreuses qualités.
    Mais avant toutes choses, il faut collecter les règles de gestion, c'est un prérequis à la modélisation.

    Pour vous aider à modéliser correctement, rendez-vous sur le forum consacré qui se trouve ici :
    https://www.developpez.net/forums/f6...sation/schema/

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2020
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    Bonjour,
    Vous devriez utiliser un outil tel que https://www.looping-mcd.fr/ créé par un de nos membres, pour vous faciliter le travail.
    Merci MaitrePylos,

    je vais étudier cet outil.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2020
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Je recommande également l'utilisation d'un logiciel de modélisation et en particulier de Looping pour ses nombreuses qualités.
    Mais avant toutes choses, il faut collecter les règles de gestion, c'est un prérequis à la modélisation.

    Pour vous aider à modéliser correctement, rendez-vous sur le forum consacré qui se trouve ici :
    https://www.developpez.net/forums/f6...sation/schema/
    Merci escartefigue,

    J'ai essayé de créer une table intermédiaire comme un entity, mais ça ne marche pas, il n'y pas de relation entre deux entity principales (ManyToMany). Je vais analyser un peu plus sur leurs relations.

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 397
    Points : 39 932
    Points
    39 932
    Billets dans le blog
    9
    Par défaut
    On ne peut pas modéliser correctement sans avoir l'exhaustivité des règles de gestion.

    Or on ne sais pas ce qu'il en est entre service et site.

    Par exemple, le service vente de Lyon est il le même que le service vente de Paris (le fait que les deux s'appellent "vente" ne signifie pas que c'est le même service).

    Selon le cas, il faut écrire la règle de gestion
    R010a : un service concerne un et un seul site et un site peut être concernée par plusieurs services
    ou alors
    R010b : un service concerne au moins un site et un site peut être concernée par plusieurs services

    On ne sait pas non plus ce qu'il en est entre service et événement, ni entre événement et site.
    Là aussi, il faut rédiger les règles de gestion sous la même forme (un identifiant de règle et un libellé)

    À partir de la, on peut établir le modèle conceptuel duquel découleront automatiquement les tables

    Note : il est inhabituel qu'une même personne soit affectée à plusieurs sites et plusieurs services.
    Merci de confirmer, sous forme de règles de gestion , si ces affectations multiples s'entendent simultanément ou bien l'une après l'autre.
    Selon les réponses, qui peuvent être différentes pour les sites et les services, le modèle de données n'est pas le même.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Août 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2020
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup escartefigue,
    En fait, j'ai oublié de marquer que Service et Site ont la relation ManyToMany.
    J'ai tenté d'utiliser actuellement Héritage pour créer DB, User est class parent, il y a UserAdmin, UserVente et UserAchats qui sont extends de User, parcontre, pour Evenement, j'ai pas d'idée, en théorie, Evenement et Service sons ManyToMany, la même pour Evenement et Site.
    j'ajoute ManyToMany pour Evenement et Site.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    /**
    * @ORM\InheritanceType("JOINED")
     * @ORM\DiscriminatorColumn(name="type", type="string")
     * @ORM\DiscriminatorMap({
     *     "admin" = "UserAdmin",
     *     "vente" = "UserV",
     *     "achats" = "UserA"
     * })
     */
    abstract class User implements UserInterface
    {
        $id;
        $email;
        $password;
        $roles;
        $evenement;   //OneToMany
    }
     
    class UserAdmin extends User
    {
         $id;
    }
     
    class UserV extends User   // Même pour UserA
    {
         $id;
         $site;  //ManyToMany
    }
    Voilà, je suis là, je vais tester si la DB marche comme prévu.

    Merci pour votre aide!

Discussions similaires

  1. Réponses: 16
    Dernier message: 20/05/2015, 14h36
  2. Jointure entre plusieurs tables: es-ce possible ?
    Par student_php dans le forum Requêtes
    Réponses: 2
    Dernier message: 03/11/2010, 20h02
  3. Réponses: 1
    Dernier message: 06/04/2009, 12h38
  4. [MySQL] Faire une jointure entre deux tables qui ne sont pas dans la même base de données
    Par sandddy dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 03/04/2008, 15h18
  5. Optimisation d'une jointure entre 3 tables
    Par gavelin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/12/2005, 10h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo