title: symfony : Problem 'Integrity constraint violation' with primary key
body: <p>When I want to create a new object with one of my form, Doctrine take me an error :</p>
  
  <pre><code>Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'
  </code></pre>
  
  <p>Creating worked previously, but I don't know what I have change to have an error now.</p>
  
  <p>My schema for ID :</p>
  
  <pre><code>Logement:
    connection: doctrine
    actAs: [Timestampable]
    tableName: logement
    columns:
      id:
        type: integer(2)
        unsigned: true
        primary: true
        autoincrement: true
  </code></pre>
  
  <p>In my forms : BaseLogementForm.class.php</p>
  
  <pre><code>$this-&gt;setWidgets(array(
               'id' =&gt; new sfWidgetFormInputHidden(),
                ... other widgets);
  
  $this-&gt;setValidators(array(
               'id' =&gt; new sfValidatorCHoice(array('choices' =&gt; array($this-&gt;getObject()-&gt;get('id')), 'empty_value' =&gt; $this-&gt;getObject()-&gt;get('id'), 'required' =&gt; false)),
               ... other validators);
  </code></pre>
  
  <p><strong>Edit :</strong></p>
  
  <p>I give you, my functions</p>
  
  <pre><code>public function executeNew(sfWebRequest $request){
    // Retourne un formulaire pour la création d'un nouveau logement
      $this-&gt;form = new logementForm();
    }
  
    public function executeCreate(sfWebRequest $request){
    // Génére un formulaire pour la création d'un nouveau logement
  
      $this-&gt;forward404Unless($request-&gt;isMethod(sfRequest::POST));
  
      $this-&gt;form = new logementForm();
  
      $this-&gt;processForm($request, $this-&gt;form);
  
      // Affichage du formulaire dans le template "newSuccess"
      $this-&gt;setTemplate('new');
    }
  
    protected function processForm(sfWebRequest $request, sfForm $form){
    // Vérifie les données d'un formulaire et les enregistre dans la base
  
      $form-&gt;bind($request-&gt;getParameter($form-&gt;getName()), $request-&gt;getFiles($form-&gt;getName()));
  
      // On teste pour savoir dans quel cas on se situe : création/modification
      // Si il s'agit d'une création :
      if ($form-&gt;getObject()-&gt;isNew()) {
          // Vérification de la validité des données entrées
          if ($form-&gt;isValid()) {
              // Si les données sont valides, enregistrement dans la base
              $logement = $form-&gt;save(); 
  
              // On vérifie que l'enregistrement à bien eu lieu
              if ($form-&gt;save()) {
                  $this-&gt;getUser()-&gt;setFlash('notice', 'Création du logement effectuée');
              }
              else {
                  $this-&gt;getUser()-&gt;setFlash('error', 'Erreur lors de la création du logement');
              }
  
              // Redirection vers la fiche du logement nouvellement créé
              $this-&gt;redirect('logement/fiche?id='.$logement-&gt;getId());   
          }
          // Sinon affichage d'un message d'erreur
          else {
              $this-&gt;getUser()-&gt;setFlash('error', 'Informations saisies non valides');
          }
      }
  </code></pre>