自动过滤掉不符合 Doctrine 条件的行
Automatically filter out rows that don't meet a condition in Doctrine
我有一个数据库已经在使用中,我无法真正更改它。在这个数据库上,我使用 "soft delete":我没有实际删除记录,只是修改了一个标志(例如设置 del=1
)。
我不使用 GEDMO 模板 (SoftDelete),但我想要相同的功能。目前,当我使用 QueryBuilder/find 函数时,它们 return 记录 del=1
。关于协会实体功能的相同想法;我必须每次检查是否 del=0
.
有没有办法自动过滤掉带有标志 del=1
的记录,除非明确要求?
您可能可以使用学说过滤器:
http://doctrine-orm.readthedocs.org/en/latest/reference/filters.html
http://www.michaelperrin.fr/2014/07/25/doctrine-filters/
禁用:
另一种观点是通过执行以下操作使您的代码更具可读性,也许更容易:
$entity = $em->getRepository("MyBundle:Entity")->findBy(['del' => 0]);
这只添加了很少的代码,并且对任何reader你正在做的事情都是显而易见的。
编辑
或者,如果您的数据库和权限允许(例如,MySQL 中的 root),您可以创建一个仅包含 del=0
记录的视图。对于 MySQL,这里是 CREATE VIEW doc。 Doctrine 允许使用视图。
我有一个数据库已经在使用中,我无法真正更改它。在这个数据库上,我使用 "soft delete":我没有实际删除记录,只是修改了一个标志(例如设置 del=1
)。
我不使用 GEDMO 模板 (SoftDelete),但我想要相同的功能。目前,当我使用 QueryBuilder/find 函数时,它们 return 记录 del=1
。关于协会实体功能的相同想法;我必须每次检查是否 del=0
.
有没有办法自动过滤掉带有标志 del=1
的记录,除非明确要求?
您可能可以使用学说过滤器:
http://doctrine-orm.readthedocs.org/en/latest/reference/filters.html http://www.michaelperrin.fr/2014/07/25/doctrine-filters/
禁用:
另一种观点是通过执行以下操作使您的代码更具可读性,也许更容易:
$entity = $em->getRepository("MyBundle:Entity")->findBy(['del' => 0]);
这只添加了很少的代码,并且对任何reader你正在做的事情都是显而易见的。
编辑
或者,如果您的数据库和权限允许(例如,MySQL 中的 root),您可以创建一个仅包含 del=0
记录的视图。对于 MySQL,这里是 CREATE VIEW doc。 Doctrine 允许使用视图。