首页 > 解决方案 > Symfony 4 对实体使用全局标准

问题描述

我使用 Symfony 4.1,我需要从我的数据库中获取不包括某些标准的结果。

现在,我在我的 repo 中使用查询:

 ->andWhere('p.status != :sold')
 ->setParameter('sold', STATUS_SOLD)
 ...

但我认为这不是好方法,因为我需要处理所有查询和关系。

我想到了侦听器/订阅者和postLoad事件。我不知道这是否是正确的方法,因为文档很差。

为整个应用程序应用实体标准的最佳方法是什么?

标签: symfonydoctrine

解决方案


请查看Doctrine Filters 文档在您的情况下,您将编写类似的内容

if (!$targetEntity->reflClass->implementsInterface('SoldAware')) {
    return "";
}

return $targetTableAlias.'.status <> ' . Statuses::STATUS_SOLD;

推荐阅读