在symfony2和mysql中生成主键

时间:2011-10-18 07:51:50

标签: mysql doctrine-orm symfony auto-increment uniqueidentifier

如何在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键'PRIMARY'重复输入'0'   500内部服务器错误 - PDOException

我只想让Symfony-Doctrine-Mysql自动增加标识符。

1 个答案:

答案 0 :(得分:5)

希望这会有所帮助:假设您正在使用注释和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;

请记住在修改对象后更新数据库架构。