Doctrine Auto Increment起始值@ORM\GeneratedValue

Nic*_*kOS 5 php sql orm symfony doctrine-orm

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

我希望它从250000开始

/**
 * @ORM\Id
 * @ORM\GeneratedValue
 * @ORM\Column(type="integer")
 */
protected $id;
Run Code Online (Sandbox Code Playgroud)

dlp*_*r98 12

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

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

  • 如果我错了,请纠正我,但这不会在MySql上吗?由于MySql没有序列,因此它具有AUTO_INCREMENT (2认同)
  • [目前 - 2.5.4](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#identifier-generation-strategies),序列仅受支持Oracle,PostgreSql和SQL Anywhere. (2认同)

小智 7

在 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
}
Run Code Online (Sandbox Code Playgroud)

在迁移文件中:

    $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');
Run Code Online (Sandbox Code Playgroud)


Kir*_*ran 6

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

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

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

ALTER TABLE users AUTO_INCREMENT=1001;
Run Code Online (Sandbox Code Playgroud)

同样在运行模式时,它不会更新手动设置的自动增量。就是这样!!它想要的结果。