Глобальный фильтр для Доктрины для Laravel - PullRequest
0 голосов
/ 17 декабря 2018

Я использую Doctrine для Laravel (Laravel 5.7), и я хочу реализовать глобальный фильтр вместо добавления вручную к каждому запросу 'where 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);
    }

Я предполагаю, что это правильно, но тогда я неконечно на всехПоскольку у меня есть Doctrine for Laravel, я не мог следовать учебнику, который нашел здесь (symfonycasts) .В документации об этом для Laravel я ничего не нашел.

Поэтому я отредактировал свой config / doctrine.php:

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

Когда я попробовал этот код, я получил следующее:

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR) Класс 'app / Doctrine / Filters / ActiveFilter' не найден

По мере необходимости я предоставил полное пространство имен, я не знаюне могу найти ошибку.Я думаю, что путь правильный.Я что-то упустил?

У вас есть идея?

Заранее благодарю,

...