我有一个 PostgreSQL 数据库,我想与 Doctrine 一起使用。数据库在某些字段上具有默认值(例如 default nextval('transfer_seq'::regclass)
)。
当我尝试执行 orm:schema-tool:update
来更改数据库时,一切正常,但 Doctrine 坚持删除所有预先存在的默认值,使用 更改表 ext_requests 删除默认值
。
当然,忽略 DROP DEFAULT 行手动运行对数据库的更改有点微不足道,但我希望自动化该过程,所以不能直接使用更新命令似乎很愚蠢。
有没有办法告诉 Doctrine schema-tool 忽略对 PostgreSQL 默认值的任何更改?
(我知道我可以 use Doctrine @PrePersist to set defaults ,但由于 Doctrine 不是唯一使用数据库的客户端,所以这不是真正的解决方案。)
最佳答案
我可能是错的,但我认为您的要求是,在 Doctrine “生成值(value)”策略上使用身份函数。
以下代码段将在“主键”列上使用 Postgres 的“nextval()”功能。
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
protected $id;
通过分配策略 IDENTITY,Doctrine 将监听数据库的默认值。
不确定其他“默认”值(非主列)是否有相同的解决方案
关于php - 将 PostgreSQL DEFAULT 与 Doctrine 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24009758/