Как устроены фильтры в интернет магазинах?
Вы думаете для этого есть 1 универсальный метод? Нет. Есть общие концепции и их несколько, а не одна + для каждого проекта надо бы думать отдельно, как рационально хранить. Все зависит от кол-ва товаров, кол-ва фильтров, типа БД и т.д. Нюансов много.
Я это всё добавляю в базу ввиде json, чтобы потом по нему искать
Печально. Как Вы искать по json будете? Обычно есть таблица с товарами, таблица с фильтрами, есть таблица со значениями для товара по определенному фильтру. Что-то типа:
id | product_id | filter_id | value
Фильтрация при этом достаточно ресурсоемкий процесс, поэтому надо разумно сделать индексы в базе и кешировать запросы.
Там все параметры товара ложатся в ячейку к товару.
Есть много плохих примеров, не стоит на них смотреть. Yii это framework. Качество архитектуры БД лежит полностью на программисте. yii дает полную свободу действий в этом плане. Так что кривые руки и отсутствие мозга - залог плохого результата, и инструменты разработки тут не при чем.