Вопрос

Как автоматически генерировать первичный ключ в Symfony2/Dectrine2?

У меня сделаны все свои сущности и база данных.

В моем контроллере Symfony2 я делаю:

<?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();

    // [...]
}

Это для тестирования. В первый раз все пошли правильно (таблица Utilisateur была пустой). Теперь, когда я снова звоню этой функции, я получаю:

SQLState [23000]: нарушение ограничений целостности: 1062 Дубликат «0» для ключа «Первичная» 500 Ошибка внутреннего сервера - PDOException

Я просто хочу, чтобы Symfony-Doctrine-Mysql автоматически увеличивал идентификатор.

Это было полезно?

Решение

Надеемся, что это поможет: при условии, что вы используете аннотации и доктрина, вам необходимо установить стратегию для автоматического объекта - из документации (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;

Не забудьте обновить свою схему базы данных после того, как вы изменили объект.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top