【发布时间】:2013-12-19 01:33:04
【问题描述】:
Postgres 可以做部分唯一索引,但我找不到任何教义文档表明对此有任何支持。
http://www.postgresql.org/docs/current/interactive/indexes-partial.html#INDEXES-PARTIAL-EX3
如何在 Symfony 中拥有一个实体,例如电子邮件。我想在哪里存储默认电子邮件的布尔标志。
电子邮件表看起来像,
id,user_id,email,default
1,1,email@something.com,false
2,1,email2@something.com,true
3,1,email3@something.com,false
我想要一个对 user_id 和 default = true 的唯一约束。
SQL 我会做类似的事情,
CREATE UNIQUE INDEX default_constraint ON emails (user_id)
WHERE default;
还有其他方法可以做到这一点吗?我考虑过实体中的 prePersist 函数,但这需要调用 db 来检查。
编辑:我也在考虑一个事件监听器,http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html
我不确定我是否要监听每个 prePersist 事件,我是否可以监听特定实体而不是使用 if 语句进行过滤。例如 if ($entity instanceof Product) {
【问题讨论】:
标签: php postgresql symfony doctrine-orm