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

Doctrine2 PHP Discussion :

ManyToMany sur 2 colonnes


Sujet :

Doctrine2 PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut ManyToMany sur 2 colonnes
    Bonjour,

    Voici mon cas d'utilisation :

    Entité Inventaire :
    • id referenceVendeur
    • id idVendeur
    • field nom
    • field description
    • ...


    Entité CommandeItem :
    • id idVendeur
    • id numeroCommande
    • id itemOrdre
    • field referenceVendeur
    • ...


    J'aimerais déclarer une association ManyToOne depuis CommandeItem vers Inventaire, avec une jointure sur idVendeur+referenceVendeur

    => voici le mapping que j'ai fait :

    Pour CommandeItem :
    Code xml : 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
    <?xml version="1.0" encoding="utf-8"?>
    <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
       <entity name="Xxx\MyBundle\Entity\CommandeItem" table="commande_item">
          <change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
          <id name="idVendeur" type="bigint" column="id_vendeur"/>
          <id name="referenceVendeur" type="string" column="reference_vendeur" length="60"/>
          <id name="numeroCommande" type="integer" column="numero_commande"/>
          <id name="itemOrdre" type="bigint" column="item_ordre"/>
          <many-to-one target-entity="Inventaire" field="inventaire">
             <join-columns>
                <join-column name="id_vendeur" referenced-column-name="id_vendeur"/>
                <join-column name="reference_vendeur" referenced-column-name="reference_vendeur"/>
             </join-columns>
          </many-to-one>-->
          <lifecycle-callbacks/>
       </entity>
    </doctrine-mapping>

    Pour Inventaire :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="utf-8"?>
    <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
       <entity name="Xxx\MyBundle\Entity\Inventaire" table="inventaire">
          <change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
          <id name="idVendeur" type="bigint" column="id_vendeur"/>
          <id name="referenceVendeur" type="string" column="reference_vendeur" length="60"/>
          <field name="nom" type="string" column="nom" length="60"/>
          <field name="description" type="string" column="description" length="500"/>
          <lifecycle-callbacks/>
       </entity>
    </doctrine-mapping>

    Problème, quand je créé un objet CommandeItem, que je fais un setIdVendeur(x), le flush me sort une erreur :
    PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'id_vendeur' cannot be null
    La propriété est bien settée non nulle, mais j'ai l'impression que le mapping de l'association sur plusieurs colonnes, dont celle-ci, remet l'id à NULL au moment de faire l'update en base..

    Une idée ? J'essaie de faire quelque chose d'impossible ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Par défaut
    Perso j'essaie d'éviter les tables et les relations un peu 'complexes', et je reste dans la simplicité.
    J'ai rencontré quelques soucis également avec la manipulation d'entités, obligé de bidouiller régulièrement pour parvenir à mes fins. Donc maintenant j'ai pratiquement toujours un seul ID par table, ca simplifie le code, même si j'aurais aimé placer plus de contraintes niveau MySQL.

    Bon je sais, ca t'aide pas ce que je dit

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Non, mais ça confirme tout de même mon sentiment sur la question

    Je ne peux pas toucher au modèle existant dans mon cas

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    772
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2004
    Messages : 772
    Par défaut
    Quelqu'un peut m'en dire plus sur le mapping d'une relation sur 2 colonnes ?

    Est-ce tout simplement impossible (voire non conforme en terme de conception de BDD) ?

Discussions similaires

  1. Contraite NULL sur une colonne en fonction d'une autre colon
    Par speedy1496 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2004, 19h29
  2. DBGrid - Affichage sur 2 colonnes
    Par Grouik dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/04/2004, 17h37
  3. doublon et trie sur autre colonne
    Par Force59 dans le forum Requêtes
    Réponses: 10
    Dernier message: 01/04/2004, 09h02
  4. Trigger sur une colonne ?
    Par hpalpha dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 14h16
  5. Check sur une colonne de table "en cours"
    Par in dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/07/2003, 09h47

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