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:
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:
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 :
Citation:
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 ?