如何使用注释设置自动增量ID的起始值?
我希望它从250000开始
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
protected $id;
答案 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');