我正在使用YAML来定义学说模式,并且想要使用0以外的数字启动id
上设置的auto-increment
字段,比方说324(这是在mysql中完成的)做AUTO_INCREMENT=324
之类的事情。
Google groups thread 提示您可以使用command.pre_command event to execute the SQL before fixtures are loaded
和参考 this page from the symfony documentation ,但两者都有提示和引用的页面实际上并没有解释一种已知的方法。有谁知道如何实际做到这一点?
答案 0 :(得分:2)
看起来Doctrine 1不支持开箱即用,所以人们告诉你要挂钩Symfony CLI任务系统在启动新任务(加载灯具)时生成的事件。这可以工作,但我不知道这是否可以从YAML值加载值(可能常规的“表创建任务”会阻塞额外的参数?)。最简洁的方法是编写执行Doctrine内容的任务的(小)子类,它理解传递给YAML文件的额外参数。这将首先定期创建数据库,然后设置自动增量基值。
更简单的方法(实现,可能不执行)将创建一个单独的文件,其中包含表名和基值,由a new Symfony task you write读取,创建并执行必要的查询。在创建数据库之后但在加载fixture之前,不要忘记执行此任务。并在每次添加表时更新配置文件。
最快速和最简单的方法是使用所有查询的额外SQL脚本,以及连续执行所有内容的shell脚本。但这需要最多的维护。
答案 1 :(得分:0)
您可以尝试在数据库中手动设置AutoIncrement,然后转储Schema文件并查看YML中为您设置的AutoIncrement输出的内容。
转储架构的命令是symfony doctrine::build-schema
它将在config / doctrine目录中创建YML文件。请记住,它将覆盖当前在该目录中的模式文件,因此您需要在尝试执行此操作之前对其进行备份。