Symfony 中的# Postgres 部分唯一索引
问题:Symfony 中的# Postgres 部分唯一索引 Postgres 可以做部分唯一索引,但我找不到任何支持这一点的学说文档。 http://www.postgresql.org/docs/current/interactive/indexes-partial.html#INDEXES-PARTIAL-EX3 我如何在 Symfony 中拥有一个实体,例如电子邮件。我想在哪里存储默认电子
·
问题:Symfony 中的# Postgres 部分唯一索引
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 u003d 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) {
解答
我认为教义现在确实支持这一点!查看学说注释参考,特别是 @index 部分。
<?php
/**
* @Entity
* @Table(name="ecommerce_products",indexes={@Index(name="search_idx", columns={"name", "email"}, options={"where": "(((id IS NOT NULL) AND (name IS NULL)) AND (email IS NULL))"})})
*/
class ECommerceProduct
{
}
更多推荐
已为社区贡献19912条内容
所有评论(0)