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 :
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..PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'id_vendeur' cannot be null
Une idée ? J'essaie de faire quelque chose d'impossible ?
Partager