Генерация первичных ключей в symfony2 и mysql - PullRequest
0 голосов
/ 18 октября 2011

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

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

В моем контроллере 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' для ключа 'PRIMARY' 500 Внутренняя ошибка сервера - исключение PDO

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

1 Ответ

5 голосов
/ 18 октября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...