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é :
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;
Une fonction set :
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;
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;
    }
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
    public function  insert($obj){
   		$registry = Zend_Registry::getInstance();
    	$em = $registry->entitymanager;   	
 
		$em->persist($obj);
		$em->persist($obj->getIdTypeBonIntervention());
		$em->flush();
   }
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.

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.