Bonjour,
J'utilise doctrine et une BDD MySQL.
Lorsque les classes models sont générées je remarque que les fonctions set pour les id ne sont pas générées. Même en les créant à la main dans certains cas cela me pause un problème lors d'une insertion dans la table.
Par exemple :
J'ai un model qui contient une propriété :
Une fonction set :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 * @var RefTypeBonIntervention * * @ManyToOne(targetEntity="Model_RefTypeBonIntervention") * @JoinColumns({ * @JoinColumn(name="ID_TYPE_BON_INTERVENTION", referencedColumnName="ID_TYPE_BON_INTERVENTION") * }) private $idTypeBonIntervention;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 /** * Set idTypeBonIntervention * * @param RefTypeBonIntervention $idTypeBonIntervention * @return Model_BonIntervention */ public function setIdTypeBonIntervention(Model_RefTypeBonIntervention $idTypeBonIntervention) { $this->idTypeBonIntervention = $idTypeBonIntervention; return $this; }
Dans le model Model_RefTypeBonIntervention le setid à été créé à la main puisqu'il n'est pas généré :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 /** * @var integer $idTypeBonIntervention * * @Column(name="ID_TYPE_BON_INTERVENTION", type="integer", nullable=false) * @Id * @GeneratedValue(strategy="AUTO") */ private $idTypeBonIntervention;Dans ma classe dao lorsque je veux insérer un nouveau bon d'intervention je procède comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 /** * Set idTypeBonIntervention * * @param integer $idTypeBonIntervention * @return Model_RefTypeBonIntervention */ public function setIdTypeBonIntervention($idTypeBonIntervention) { $this->idTypeBonIntervention = $idTypeBonIntervention; return $this; }
Mon problème c'est que l'id contenu dans l'objet $obj->getIdTypeBonIntervention() n'est pas pris en compte et un enregistrement est ajouté dans la table type_bon_intervention et c'est cet l'id qui est ajouté dans l'enregistrement de ma table bon_intervention.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public function insert($obj){ $registry = Zend_Registry::getInstance(); $em = $registry->entitymanager; $em->persist($obj); $em->persist($obj->getIdTypeBonIntervention()); $em->flush(); }
Et je me demande si le fait que mon model Model_TypeBonIntervention soit généré sans setid() fait que mon id contenu dans mon objet $obj->getIdTypeBonIntervention() n'est pas pris en compte lors de mon insert.
Partager