其他分享
首页 > 其他分享> > 的Symfony 2.3实体布尔属性只允许一行为真

的Symfony 2.3实体布尔属性只允许一行为真

作者:互联网

这应该很容易,但是我似乎找不到答案…
我正在尝试做的是创建页面捆绑;零件非常简单.我在数据库中添加了一个isHome列.基本上,我希望在主页上设置一个标志.显然,数据库中只有一行可以将该值设置为true,其余的必须为false.

现在让我们说,我不在乎所有记录是否为假,我最多只希望一个记录为真(尽管强行强制至少一个记录为真).

我最初想到的方法是在存储库中创建一个方法,如果当前页面对象将isHome值设置为true,则将所有isHome值设置为false,然后保存该记录.似乎是个好主意,但看来我不能/不应该从实体中调用存储库.

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

我正在将Symfony 2.3.1与MySQL数据库和doctrine2配合使用.

解决方法:

只需为您的实体添加PrePersist和PreUpdate准则listener/subscriber.

当触发侦听器时,使用诸如findBy(array(‘isHome’=> true))之类的东西,将isHome设置为true的其他实体查询到您的存储库中…

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

标签:symfony,doctrine,entity,mysql,php
来源: https://codeday.me/bug/20191123/2064570.html