Doctrine Auto Increment起始值@ORM \ GeneratedValue

时间:2015-08-07 00:48:16

标签: php sql symfony orm doctrine-orm

如何使用注释设置自动增量ID的起始值?

我希望它从250000开始

/**
 * @ORM\Id
 * @ORM\GeneratedValue
 * @ORM\Column(type="integer")
 */
protected $id;

3 个答案:

答案 0 :(得分:10)

/**
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="SEQUENCE")
 * @ORM\SequenceGenerator(sequenceName="id", initialValue=250000)
 * @ORM\Column(type="integer")
 */
 protected $id;

http://doctrine-orm.readthedocs.org/en/latest/reference/basic-mapping.html

答案 1 :(得分:2)

不知道这个答案对用户有用。 但对我来说,它给出了所需的结果(对于mysrt的docrtine) 我使用了常用的自动增量ID,

/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

第一次运行命令更新而不是表将创建。 你应该手动运行以下命令来设置自定义初始自动增量ID

ALTER TABLE users AUTO_INCREMENT=1001;

再次在运行架构时,它不会更新手动设置的自动增量。 就是这样!!它是理想的结果。

答案 2 :(得分:0)

在MySQL平台上,我将其写为(@ORM\Table(options={"auto_increment": 12345}))以将“ AUTO_INCREMENT = 12345”添加到SQL创建表中。我没有使用@ORM\SequenceGenerator

/*
 * @ORM\Table(options={"auto_increment": 12345})
 */
class MyEntity {

    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    // Others properties
}

在迁移文件中:

    $this->addSql('CREATE TABLE my_entity (id INT AUTO_INCREMENT NOT NULL, ...) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ENGINE = InnoDB AUTO_INCREMENT = 12345');