@Blumfontein

Глобальные фильтры в Propel ORM

Начал изучать эту ORM, и она мне показалось очень вкусной. Но вот возник вопрос: можно ли как-то с помощью Propel реализовать механизм глобальных фильтров. Поясню на примере.

Допустим, я делаю некий SaaS. У меня есть с десяток моделей, у каждой из которых есть поле company_id, очевидно, показывающее принадлежность к компании. Таким образом мне в каждом запросе необходимо писать дополнительное условие filterByCompanyId($id), так же в каждом INSERT надо подставлять отдельно ID компании.

Было бы очень круто, если можно было бы 1 раз где-нибудь в базовом контроллере прописать условие, что-то типа $propel->globalFilterByCompanyId($id), затем это условие автоматически добавляется в каждый запрос для моделей, которые содержат поле company_id (причем не только в запросы типа SELECT, но и DELETE, UPDATE, INSERT).

Это хорошо не только для сокращения количества кода, но и для улучшения декомпозиции логики: мы прописали условие на компанию, затем полностью абстрагируемся от конкретной компании и пишем всю дальнейшую логику так, как будто бы делаем сайт для одной компании.

Если Propel такое не умеет, было бы интересно узнать, умеют ли такое другие ORM, потому как я не встречал такого нигде.
  • Вопрос задан
  • 2607 просмотров
Пригласить эксперта
Ответы на вопрос 2
jakulov
@jakulov
Не знаю на счет Propel.
Я обычно использую Doctrine и там есть Repository и ObjectManager
В них с помощью наследования нетрудно переопределить стандартные методы, и дописать в них необходимые условия.
Ответ написан
vollossy
@vollossy
Веб-разработчик с небольшим опытом работы
Подобного метода, насколько мне известно, в Propel нет. И, как мне кажется, вот почему. То, о чем Вы говорите, это не совсем уровень ORM, это уже бизнес-логика и разработчики просто не могут предсказать все варианты использования своего инструмента.
Да и в конце-концов, Вы можете просто настроить связи в модели Company и делать выборку по связанным полям(с dml уже не так просто будет)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Spice IT Recruitment Москва
До 230 000 ₽
ImageSpark Санкт-Петербург
от 60 000 ₽
FrozenEon Киев
от 1 500 до 3 000 $