这应该很简单,但我似乎无法找到答案......
我要做的是创建一个页面包;这些部分非常简单。我在我的数据库中添加了isHome
列。基本上我想要在主页的页面上设置一个标志。显然,数据库中只有一行可以将该值设置为true,其余行必须为false。
我们暂时说我不关心所有记录是否都是假的,我只想要一条记录是真的(尽管强迫至少一条记录是真的很好)。
我最初考虑这样做的方法是在存储库中创建一个方法,以便在当前isHome
对象将page
值设置为true时将所有isHome
值设置为false,然后保存该记录。看起来像个好主意,但似乎我不能/不应该从实体调用存储库。
关于我如何只允许一条记录从实体设置为isHome
的任何想法?
我正在使用Symfony 2.3.1和MySQL数据库以及doctrine2。
答案 0 :(得分:3)
只需为您的实体添加PrePersist和PreUpdate原则listener/subscriber即可。
当触发器被触发时,使用诸如findBy(array('isHome' => true))
之类的内容查询存储库以查找isHome设置为true的其他实体...
...然后使用isHome false更新所有找到的实体,并且在您持久保存/更新实体后,将始终只剩下一个实体。