![](https://dhampik.ru/rails/active_storage/representations/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBDdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--b5d2e3afd5eced1fb83c30a0a2b0137a27164be9/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdCem9MWm05eWJXRjBPZ2h3Ym1jNkVuSmxjMmw2WlY5MGIxOW1hWFJiQjJrQmdHa0JnQT09IiwiZXhwIjpudWxsLCJwdXIiOiJ2YXJpYXRpb24ifX0=--97dc6d68b366554a9907e9783c9a0c17c15569ec/yii-items-tagging.png)
Теггирование различных элементов очень часто встречается в разработке сайтов. Сами теги реализуются просто — это отдельная таблица с названиями тегов и таблица связки многие-ко-многим между тегами и какими-то сущностями. Однако реализация фильтрации по тегам — не такая уж простая задача. Фильтровать сущности по тегам как правило приходится одним из следующих вариантов:
- выбрать все элементы без тегов
- выбрать элементы, имеющие все указанные теги (и возможно, другие теги)
- выбрать элементы, имеющие один или несколько из указанных тегов (и возможно, другие теги)
Рассмотрим каждый из этих случаев и приведем пример конкретной реализации фильтрации на Yii.