8

在学说 2 中,我有一个实体,它有一个从 web 服务提供的主键,并且还有一个应该是自动增量的索引。

我可以在 mysql 中手动设置,但不能在学说 2 中进行设置。

4

2 回答 2

21

columnDefinition我用过INT AUTO_INCREMENT UNIQUE

/**
 * @var integer
 *
 * @ORM\Column(type="integer", name="sequence", nullable=true, columnDefinition="INT AUTO_INCREMENT UNIQUE")
 */
protected $sequence = null;

教义迁移包生成

$this->addSql('ALTER TABLE table_name_here ADD sequence INT AUTO_INCREMENT UNIQUE');

编辑:请注意,此答案来自 2016 年,它可能不再有效。请参阅已接受的答案。

于 2016-01-12T17:02:38.533 回答
7

自动增量限制与您使用的数据库有关。在 Mysql ,Mysql_autoincrement中,它还取决于您使用的引擎。例子:

对于 MyISAM 和 BDB 表,您可以在多列索引中的辅助列上指定 AUTO_INCREMENT。在这种情况下,AUTO_INCREMENT 列的生成值计算为

您可以在此处获得有关 auto_increment 的一般文档

通常,auto_increment 保留给作为标识符索引一部分的数字字段(涉及一个或多个列)。

所以这适用于mysql。

然而,教义中的 auto_incriment 似乎只允许@Id(主键)

21.2.9。@GeneratedValue

指定使用哪种策略为由@Id 注释的实例变量生成标识符。此注解是可选的,仅在与@Id 结合使用时才有意义。

如果未使用 @Id 指定此注释,则默认使用 NONE 策略。

必需的属性:

strategy:设置标识符生成策略的名称。有效值为 AUTO、SEQUENCE、TABLE、IDENTITY、UUID、CUSTOM 和 NONE。例子:

?php
/**
 * @Id
 * @Column(type="integer")
 * @GeneratedValue(strategy="AUTO")
 */
protected $id = null;

Doctrine_auto_increment

你可能想找一个工作区并张贴一张关于它的票

于 2013-02-19T18:53:02.000 回答