Глобальный фильтр для Doctrine для Laravel

Я использую 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 для Laravel, я не мог следовать руководству, которое нашел здесь (symfonycasts). Я не нашел ничего об этом в документации для Laravel.

Итак, я отредактировал свой config / doctrine.php:

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

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

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

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

У тебя есть идея?

Заранее спасибо,

Можете ли вы изменить app на App в вашем config/doctrine.php или использовать \App\Doctrine\Filters\ActiveFilter::class

Remul 17.12.2018 16:59

Я пробовал использовать приложение с :: class и без него. Но я получаю ту же ошибку. Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR) Class '\ App \ Doctrine \ Filters \ ActiveFilter :: class' не найден

Cybermate 17.12.2018 17:03

если ваше пространство имен правильное, попробуйте запустить composer dump-autoload

Remul 17.12.2018 17:32

Теперь он работает благодаря команде. Дело в том, что я запускал его раньше. Но теперь он полностью работает! Спасибо.

Cybermate 17.12.2018 17:56
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
4
275
0

Другие вопросы по теме