对于给定名称的特定序列,生成nextval
的最简单方法是什么?
标注解决方案与指定
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="sq_foobar", allocationSize="1", initialValue="1")
只要有更复杂的逻辑在里面在某些情况下,我需要检索nextval
,在其他情况下,我将使用从其他源(而不是序列)检索的值。
所以我希望有一种方法可以在实体的构造函数中手动检索序列nextval。
4条答案
按热度按时间xsuvu9jc1#
以防万一别人也提出这个问题(就像我一样):
@Florian提到的pull请求现在已经成为了教条。虽然文档似乎仍然缺乏CUSTOMid生成器策略的任何信息。我发现只有在GeneratedValue描述中提到了IdGenerator的
CUSTOM
选项。如果我错过了,请在评论中更正我。坚韧很容易实现,只需创建一个扩展
Doctrine\ORM\Id\AbstractIdGenerator
的类:然后将其添加到条令实体配置中的
id
描述中(YAML
示例):如果使用
Annotations
而不是YAML,实体配置应如下所示(未测试):这就是所有;)
r7knjye22#
在教义2中,有两种可能性得到序列nextval:
1.使用Doctrine ORM序列生成器
1.使用本机SQL
qvtsj1bj3#
那么我认为你应该实现你自己的Identifer生成器。
最简单的方法是覆盖Doctrine\ORM\Id\SequenceGenerator类来处理您的特定情况。
然后,您必须使用Doctrine ORM API在类元数据中注册此生成器。
部分链接:http://ranskills.wordpress.com/2011/05/26/how-to-add-a-custom-id-generation-strategy-to-doctrine-2-1/
https://github.com/doctrine/doctrine2/pull/206
yfjy0ee74#
我有symfony 6与教条形式2.13和工程代码,在SomeEntityRepository创建的函数:
且在控制器中用作: