Laravel准则的全局过滤器

时间:2018-12-17 15:42:00

标签: laravel doctrine-orm

我在Laravel(Laravel 5.7)上使用Doctrine,我想实现一个全局过滤器,而不是手动向每个查询“其中active = true”添加。

我听说过SQL过滤器,并提出了此类:

namespace App\Doctrine\Filters;


use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Query\Filter\SQLFilter;

class ActiveFilter extends SQLFilter
{
    public function addFilterConstraint(ClassMetadata $targetEntity, $targetTableAlias)
    {
        return sprintf('%s.active = %s', $targetTableAlias, $this->getParameter('active'));
    }
}

然后,在我的主控制器中(我的所有控制器都从该控制器扩展):

public function __construct($em)
    {
        $this->em = $em;

        // Only display active rows.
        $this->em->getFilters()
            ->enable('active_rows')
            ->setParameter('active', true);
    }

我认为这是正确的,但是我不确定。当我有了Laravel的教义时,我无法遵循发现的here (symfonycasts)教程。在Laravel的文档中找不到任何内容。

所以我编辑了config / doctrine.php:

'filters' => [
            'active_rows' => 'app\Doctrine\Filters\ActiveFilter'
        ],

当我尝试此代码时,我得到了:

Symfony \组件\调试\异常\ FatalThrowableError(E_ERROR) 找不到类“ app / Doctrine / Filters / ActiveFilter”

根据需要,我提供了完整的名称空间,但没有找到错误。我认为这条路是正确的。我想念什么吗?

你有个主意吗?

先谢谢您

0 个答案:

没有答案