我正在使用 Doctrine2 开发我的 php 软件。使用它非常简单,但我有一个小问题,我会知道在这种情况下什么是最佳实践。也许你可以帮助我!你会得到我所有的感激:-D
情况 :
我有 2 个实体(用户和联系人)
- 一个用户可以包含一些联系人
- 实体(表)联系人有一个标记为 mainContact 的字段,该字段定义它是否是用户的主要联系人。
- 只有一个联系人可以是主要联系人(mainContact=1)
有问题的:
当我坚持联系时,我会喜欢这样:
- 如果此联系人的 mainContact=1,则与该用户关联的所有其他联系人都应更新为 mainContact=0
- 如果此联系人的 mainContact=0,我需要检查所有其他联系人。如果我没有找到该用户的 mainContact=1 的任何其他联系人,我会自动使用 setMainContact(true) 更新当前联系人。
可能的解决方案 :
我对如何处理这个逻辑有一些想法,但我想知道为了编写好的代码的最佳实践,因为这个应用程序将是一个开源应用程序。
不干净的想法:
- 在联系人存储库中创建一个方法,该方法将更新分配给用户的所有其他联系人,并将值返回给当前联系人的属性。
使用此解决方案,我必须始终先启动存储库方法才能在应用程序周围保持联系。如果我忘记启动它,数据库完整性应该会受到影响。
- 使用实体的 Prepersist 机制获取实体管理器并更新所有其他用户的联系人。
不推荐使用此方法,实体不应直接访问实体管理器。
谁能告诉我这样做的最佳做法是什么?非常感谢你 !
PS:对不起我的英语不好!