Generando claves primarias en Symfony2 y MySQL
-
25-10-2019 - |
Pregunta
¿Cómo generar automáticamente una clave primaria en Symfony2/Doctrine2?
Tengo todas mis entidades y bases de datos hechas.
En mi controlador Symfony2, lo hago:
<?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();
// [...]
}
Es para pruebas. La primera vez que todo salió bien (la mesa de utilización estaba vacía). Ahora, cuando vuelvo a llamar a esta función, obtengo:
SQLSTATE [23000]: Violación de la restricción de integridad: 1062 Entrada duplicada '0' para la clave 'primaria' 500 Error del servidor interno - PDOException
Solo quiero que Symfony-Doctrine-Mysql aumente automáticamente el identificador.
Solución
Esperemos que esto ayude: suponiendo que esté utilizando anotaciones y doctrina ORM, debe establecer la estrategia para automáticamente en su objeto, desde la documentación (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;
Recuerde actualizar el esquema de su base de datos después de haber modificado el objeto.