Zend framework 条令模式更改为id自动增量

Zend framework 条令模式更改为id自动增量,zend-framework,orm,symfony1,doctrine,propel,Zend Framework,Orm,Symfony1,Doctrine,Propel,我正在使用YAML来定义条令模式,并希望使用除0以外的数字启动设置在自动递增上的id字段,比如324(这在mysql中通过执行类似于自动递增=324的操作来完成) 此有一个提示,可能需要使用命令。在加载装置和引用之前执行SQL的pre_命令事件,但是提示和引用的页面实际上都没有解释执行此操作的已知方法。有人知道如何实际执行此操作吗?您可以尝试设置t他在数据库中手动自动递增,然后转储模式文件,并查看它在YML中为您设置的自动递增输出了什么 转储模式的命令是symfony原则::build sche

我正在使用YAML来定义条令模式,并希望使用除0以外的数字启动设置在
自动递增
上的
id
字段,比如324(这在mysql中通过执行类似于
自动递增=324
的操作来完成)


有一个提示,可能需要使用
命令。在加载装置和引用之前执行SQL的pre_命令事件,但是提示和引用的页面实际上都没有解释执行此操作的已知方法。有人知道如何实际执行此操作吗?

您可以尝试设置t他在数据库中手动自动递增,然后转储模式文件,并查看它在YML中为您设置的自动递增输出了什么

转储模式的命令是
symfony原则::build schema


它将在config/doctrine目录中创建YML文件。请记住,它将覆盖当前在该目录中的架构文件,因此在尝试执行此操作之前,您需要备份该文件。

看来doctrine 1不支持这种开箱即用的方式,因此人们告诉您连接到Symfony CLI task system在启动新任务(加载装置)时生成。这会起作用,但我不知道这是否可以从YAML值加载值(可能常规的“表创建任务”会因额外参数而阻塞)。最干净的方法是编写(一点)执行Doctrine stuff的任务的子类,它理解传递给YAML文件的额外参数。这将首先定期创建数据库,然后设置自动增量基值

更简单的方法(实现,可能不执行)将创建一个包含表名和基值的单独文件,该文件由读取,用于创建和执行必要的查询。只是不要忘记在创建数据库后但在加载装置之前执行此任务。以及在每次添加表时更新配置文件


最快捷、最肮脏的方法是使用一个包含所有查询的额外SQL脚本,以及一个执行所有行的shell脚本。但这需要您进行最多的维护。

YAML不是数据库格式。YAML“自动增量”会发生什么?它被放在某个实际的数据库中了吗?@Jan Fabry,我们从条令改为推进,因为条令有一个缺陷,使得定制数据库模式的sql几乎不可能。它应该生成sql,然后插入它,所以要微调生成的sql,最好在sql生成之后,但在ore sql插入。好吧,条令有一个错误(不能称之为其他错误):在执行sql插入时,它不仅执行sql插入,还重新访问先前生成的文件并添加注释(再次编辑文件)Jan Fabry说,这不会发生在Upjel.@这不会发生在PROPEL上。PROPEL使SQL生成完全独立于SQL插入,所以你可以很容易地进入中间,做你自己的事情,你所做的改变会生效。实际上,sql生成和插入步骤并不是完全分开的。很有趣。您是否在插入之前执行了新任务?也许您可以向Symfony或Propel邮件列表发送一封包含更多详细信息的电子邮件,这可能对其他人有用(新版本中可能会包含对设置自动增量值的明确支持)。@jblue:我在Prope源代码中找不到对它的任何引用,因此我认为它没有此功能。阻止它的原因之一可能是跨供应商兼容性(您需要在其他环境中模拟它)。但是,Propel允许在架构中提供特定于供应商的信息,并且目前使用该信息访问其他功能。因此,我认为,如果您创建一个票证并将开发人员列表发送给他们,那么获得对自动增量开始值的支持应该很容易。请阅读我对我的主要问题的评论。可以通过自定义sql生成和sql插入之间的sql来完成n、 我们用Doctrine进行了尝试,但它有一个bug,所以我们用Propel进行了尝试,效果很好。我做这项工作的同事出于这个原因决定切换到Propel,因为我们认为能够根据需要对sql进行微调对我们在项目的过程中非常重要。