4

这应该很容易,但我似乎找不到答案......我想做的是创建一个页面包;那部分很容易。我在isHome我的数据库中添加了一个列。基本上我希望它在主页页面上设置一个标志。显然,数据库中只有一行可以将该值设置为 true,其余的必须为 false。

让我们暂时假设我不在乎所有记录是否都是错误的,我只希望最多一条记录是真实的(尽管强制至少一条记录是真实的会很好)。

我最初考虑这样做的方式是在存储库中创建一个方法,isHome如果当前page对象将isHome值设置为 true,则将所有值设置为 false,然后保存该记录。似乎是个好主意,但似乎我不能/不应该从实体调用存储库。

关于如何只允许isHome实体中的一条记录设置为 true 的任何想法?

我将 Symfony 2.3.1 与 MySQL 数据库和教义2 一起使用。

4

1 回答 1

3

只需为您的实体添加 PrePersist 和 PreUpdate 学说侦听器/订阅者。

当侦听器被触发时,使用类似findBy(array('isHome' => true))...

...然后用 isHome false 更新所有找到的实体,并且在您持久化/更新实体后,总是只有一个留在家中。

于 2013-07-12T00:02:41.657 回答