Генерирование первичных ключей в Symfony2 и MySQL
-
25-10-2019 - |
Вопрос
Как автоматически генерировать первичный ключ в 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;
Не забудьте обновить свою схему базы данных после того, как вы изменили объект.