Table jointure et persist cascade
Bonjour,
Je rencontre un petit souci à la définition de persist en cascade dans une table jointure entre deux entités "utilisateur" et "entreprise".
J'ai donc mes deux entités sus-citées définies ainsi :
Utilisateur
Code:
1 2 3 4 5 6 7 8 9 10
| class Utilisateur extends BaseUser {
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id; |
Entreprise
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| class Entreprise {
protected $siret;
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*
*/
private $id; |
Et enfin l'entité Utilisateur_Entreprise:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class Utilisateur_Entreprise
{
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\ManyToOne(targetEntity="Proetco\UserBundle\Entity\Utilisateur", inversedBy="entreprises", cascade={"persist"})
* @Assert\Type(type="Proetco\UserBundle\Entity\Utilisateur")
* @Assert\Valid
*/
protected $utilisateur;
/**
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\ManyToOne(targetEntity="Proetco\FrontBundle\Entity\Entreprise", inversedBy="utilisateurs", cascade={"persist"})
* @Assert\Type(type="Proetco\FrontBundle\Entity\Entreprise")
* @Assert\Valid
*/
protected $entreprise; |
Seulement, suite à un petit test pour vérifier le fonctionnement du persist :
Code:
1 2 3 4 5 6 7 8 9 10
| $ue = new Utilisateur_Entreprise;
$utilisateur = new Utilisateur;
$entreprise = new Entreprise;
$ue->setUtilisateur($utilisateur);
$ue->setEntreprise($entreprise);
$em = $this->getDoctrine()->getEntityManager();
$em->persist($utilisateur);
$em->persist($entreprise);
$em->persist($ue); |
J'obtiens une erreur (j'ai juste supprimé les namespace et noms des bundles pour la lecture) du type :
Code:
Entity of type ***\Utilisateur_Entreprise has identity through a foreign entity ***\Utilisateur, however this entity has no ientity itself. You have to call EntityManager#persist() on the related entity and make sure it an identifier was generated before trying to persist '***Utilisateur_Entreprise'. In case of Post Insert ID Generation (such as MySQL Auto-Increment or PostgreSQL SERIAL) this means you have to call EntityManager#flush() between both persist operations.
J'ai relu plusieurs fois la doc Doctrine sur les associations et les persist, et cela me semble pourtant correct. On peut bien l'utiliser ainsi?
Merci d'avance pour votre aide.