【问题标题】:Automatically filter out rows that don't meet a condition in Doctrine自动过滤掉Doctrine中不满足条件的行
【发布时间】:2015-03-06 15:29:21
【问题描述】:

我有一个数据库已在使用中,但我无法真正更改它。在这个数据库上,我使用“软删除”:我没有实际删除记录,而是修改了一个标志(例如,设置 del=1)。

我不使用 GEDMO 模板 (SoftDelete),但我想要相同的功能。目前,当我使用 QueryBuilder/find 函数时,它们返回带有del=1 的记录。关联实体的功能思路相同;我必须每次检查del=0

有没有办法自动过滤掉带有标志 del=1 的记录,除非明确要求?

【问题讨论】:

  • 我刚刚整理了一下你的语法,希望能让这个问题更容易理解。如果我有任何不正确的地方,请进行编辑。我也尝试让标题更具体,如有必要,请再次编辑。

标签: php symfony doctrine-orm doctrine doctrine-1.2


【解决方案1】:
【解决方案2】:

另一种观点是通过执行以下操作使您的代码更具可读性并且可能更容易:

$entity = $em->getRepository("MyBundle:Entity")->findBy(['del' => 0]);

这增加了很少的代码,任何读者都清楚你在做什么。

编辑

或者,如果您的数据库和权限允许(例如 MySQL 中的 root),您可以创建一个仅包含 del=0 记录的视图。对于 MySQL,这里是 CREATE VIEW doc。教义允许使用观点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 2018-01-15
    相关资源
    最近更新 更多