La génération de clés primaires dans Symfony2 et mysql
-
25-10-2019 - |
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.
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.