我试图将Doctrine模型包装在PostgreSQL中具有以下内容的遗留数据库表中:
Column | Type | Modifiers
------------+--------------------------+------------------------------------------------------
id | integer | not null default nextval('table_name_id_seq'::regclass)
如果我尝试的映射如下:
/**
* @ORM\Id
* @ORM\Column(name="id", type="integer", unique=true)
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
然后架构更新工具给我这个:
ALTER TABLE table_name ALTER id DROP DEFAULT;
如果我尝试明确定义默认值,例如:
/**
* @ORM\Id
* @ORM\Column(name="id", type="integer", unique=true, options={"default"="nextval('table_name_id_seq'::regclass)"})
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
然后它仍然给出:
ALTER TABLE table_name ALTER id SET DEFAULT nextval('table_name_id_seq'::regclass);
ALTER TABLE table_name ALTER id DROP DEFAULT;
最后,如果我尝试手动指定序列:
/**
* @ORM\Id
* @ORM\Column(name="id", type="integer", unique=true)
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="table_name_id_seq", initialValue=1, allocationSize=1)
*/
private $id;
我仍然得到DROP DEFAULT
:
ALTER TABLE table_name ALTER id DROP DEFAULT;
是否有针对此问题的解决方法仍然允许使用架构更新工具?我无法找到与此相关的Doctrine错误,但我可能错过了一些东西。这是在Symfony 2.5.2下运行的最新2.4.X版本的Doctrine。
答案 0 :(得分:7)
试
* @ORM\GeneratedValue(strategy="IDENTITY")