Теггирование различных элементов очень часто встречается в разработке сайтов. Сами теги реализуются просто — это отдельная таблица с названиями тегов и таблица связки многие-ко-многим между тегами и какими-то сущностями. Однако реализация фильтрации по тегам — не такая уж простая задача. Фильтровать сущности по тегам как правило приходится одним из следующих вариантов:
- выбрать все элементы без тегов
- выбрать элементы, имеющие все указанные теги (и возможно, другие теги)
- выбрать элементы, имеющие один или несколько из указанных тегов (и возможно, другие теги)
Рассмотрим каждый из этих случаев и приведем пример конкретной реализации фильтрации на Yii.