Question

Comment générer automatiquement une clé primaire dans Symfony2 / Doctrine2?

J'ai toutes mes entités et base de données fait.

Dans mon contrôleur Symfony2, je fais:

<?php
/**
 * @Route("/myroute", name="myroute")
 * @Template()
 */
public function myrouteAction()
{
    /* Page de Création d'un retrait ou d'une réexpédition. */
    $obj = new Utilisateur();
    $obj->setUsermail('contact@mydomain.com');
    $obj->setUserpass('coucou');
    $obj->setUservalide('1');

    $em = $this->getDoctrine()->getEntityManager();
    $em->persist($obj);
    $em->flush();

    // [...]
}

Il est pour les tests. La première fois est allé bien (table était vide Utilisateur). Maintenant, quand je l'appelle à nouveau cette fonction, je reçois:

SQLSTATE [23000]: Intégrité violation de contrainte: 1062 entrée en double '0' pour la touche 'PRIMAIRE' 500 Internal Server Error - PDOException

Je veux juste Symfony Doctrine-Mysql pour incrémenter automatiquement l'identifiant.

Était-ce utile?

La solution

Espérons que cela aide: en supposant que vous utilisez des annotations et Doctrine ORM, vous devez définir la stratégie automatique sur votre objet - de la documentation ( http://symfony.com/doc/current/book/doctrine.html )

/**
 * @ORM\Entity
 * @ORM\Table(name="product")
 */
class Product
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
-->  * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

ne pas oublier de mettre à jour votre schéma de base de données après avoir modifié l'objet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top