在doctrine2中,是否可以使用不是主键的自动增量列?

use*_*246 7 zend-framework primary-key auto-increment symfony doctrine-orm

在doctrine2中,我有一个实体,它具有从Web服务中获取的主键,并且还有一个应该是自动增量的索引.

我可以在mysql中手动设置,但不能在doctrine2中使这个工作.

gin*_*nja 16

我用columnDefinitionINT AUTO_INCREMENT UNIQUE

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

Doctrine迁移捆绑包生成

$this->addSql('ALTER TABLE table_name_here ADD sequence INT AUTO_INCREMENT UNIQUE');
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,此答案来自2016年,可能不再有效.见接受的答案.

  • 在学说/orm v2.6.2 上仍然有效 (2认同)

ble*_*her 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策略用作默认策略.

必需属性:

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

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

Doctrine_auto_increment

你可能想找一份工作,然后发一张关于它的票