我有一个数据库已经在使用,我不能真正改变它。在这个数据库中,我使用了一个“软删除”:而不是实际删除一个记录,我只是修改一个标志(例如设置del=1)。
我不使用GEDMO模板(SoftDelete),但我需要相同的功能。目前,当我使用QueryBuilder/find函数时,它们会使用del=1返回记录。对关联实体的函数也有相同的想法;我每次都要检查是否是del=0。
是否有一种方法可以自动过滤出带有标志del=1的记录,除非明确请求它?
发布于 2015-03-06 17:41:44
您可能可以使用原则过滤器:
http://doctrine-orm.readthedocs.org/en/latest/reference/filters.html http://www.michaelperrin.fr/2014/07/25/doctrine-filters/
使以下功能失效:
http://doctrine-orm.readthedocs.org/en/latest/reference/filters.html#disabling-enabling-filters-and-setting-parameters
发布于 2015-03-06 17:46:30
另一个透视图是通过这样的操作使代码更加可读性更好,也许更容易:
$entity = $em->getRepository("MyBundle:Entity")->findBy(['del' => 0]);这只会增加很少的代码,对任何读者来说都是显而易见的。
编辑
或者,如果您的数据库和特权允许(例如,根在MySQL中),您可以创建一个只包含del=0记录的视图。对于MySQL,这里是创建视图文档。原则允许使用观点。
https://stackoverflow.com/questions/28902065
复制相似问题