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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top