Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用doctrine2设置初始自动增量值_Php_Mysql_Doctrine Orm - Fatal编程技术网

Php 如何使用doctrine2设置初始自动增量值

Php 如何使用doctrine2设置初始自动增量值,php,mysql,doctrine-orm,Php,Mysql,Doctrine Orm,我使用doctrine2映射器生成innoDB(mysql)数据库。 如何使用php注释设置自动递增id的初始值 这就是我目前建模实体类型id的方式 /** * @var integer $_id * * @Column(name="id", type="integer", nullable=false) * @Id * @GeneratedValue(strategy="IDENTITY") */ private $_id; 我在文档中找到了以下代码,但它看起来似乎将使用一个单独

我使用doctrine2映射器生成innoDB(mysql)数据库。 如何使用php注释设置自动递增id的初始值

这就是我目前建模实体类型id的方式

/**
 * @var integer $_id
 *
 * @Column(name="id", type="integer", nullable=false)
 * @Id
 * @GeneratedValue(strategy="IDENTITY")
 */
private $_id;
我在文档中找到了以下代码,但它看起来似乎将使用一个单独的表来生成ID

/**
 * @Id
 * @GeneratedValue(strategy="SEQUENCE")
 * @Column(type="integer")
 * @SequenceGenerator(sequenceName="tablename_seq", initialValue=1, allocationSize=100)
 */

您可以设置strategy=“NONE”并在@prepersist函数中设置最后一个ID。更简单的方法是在DataFixture或DB迁移中添加一个“altertable something AUTO_INCREMENT=100;”。它不是可移植的SQL,但它可以在不增加实体复杂性的情况下完成任务。

从文档中看不太清楚,但有消息称

doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php:        if (isset($options['auto_increment'])) {
doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php:            $tableOptions[] = sprintf('AUTO_INCREMENT = %s', $options['auto_increment']);
因此,for mysql用作@table注释的选项

* @ORM\Table(name="xxx", options={"auto_increment": 100})

下面是在MySQL的条令2中设置自动增量的完整代码示例:

$connection = $this->getEntityManager()->getConnection();
$connection->prepare('ALTER TABLE my_table AUTO_INCREMENT = 100;')->execute();

如何在prepersist函数中设置id?在prepersist函数中获取最高+1,但使用EventManager进行设置种族条件如何?我认为按照您的建议,这必须通过一个事务来完成,如果一次创建多个实体(例如,在安装脚本中),我认为您会遇到问题,不是吗?好的,我首选的解决方案是将其放入DB迁移或修复程序中。我在Symfony2项目中使用修复程序。你可以在这里阅读所有关于它的内容,我还做了一个Zend框架项目,使用了条令迁移,你可以在这里找到更多关于它的信息。请不要发布多个问题的相同答案。选择最好的问题并在那里发布一个好答案,然后标记关闭其他问题作为重复问题。如果问题不是重复的,你必须回答。