Довольно стандартно. Есть 2 вида блоков. В блоках первого типа пользователь может выбрать любые опции из заранее заготовленного списка. Допустим, есть блок, посвященный марке автомобиля, и опции «Volkswagen», «Skoda», «Ford». В блоках второго типа пользователю предоставляется либо поле для ввода, либо заготовленные виджеты, к примеру, для ввода даты, промежутков дат и т.п. Он выбирает свойство, по которому хочет добавить условие, к примеру, «Дата выхода модели» и указывает любое желаемое значение. При этом для каждого из аспектов он может указать любое количество значений. При этом есть ещё возможность инвертировать поиск по некоторым атрибутам…
В итоге все введенные условия собираются, аккумулируются и передаются на сервер.
почему количество «опций фильтра» (кстати, что это?) влияет на количество запросов?
Для каждой опции («Volkswagen», «Skoda» или «Ford») из каждого блока первого типа мы подтягиваем количество записей, подходящих именно под эту опцию и под все остальные введенные фильтры. Запрос исполняется на уровне базы, поэтому для каждой из опций приходится делать свой запрос, т.к. меняются условия. Поэтому у нас столько запросов, сколько и опций. Можно, конечно, попробовать поработать с запросом и группировкой по опции, но пока нет необходимости.
Очень надеюсь, что расписал понятно.
Довольно стандартно. Есть 2 вида блоков. В блоках первого типа пользователь может выбрать любые опции из заранее заготовленного списка. Допустим, есть блок, посвященный марке автомобиля, и опции «Volkswagen», «Skoda», «Ford». В блоках второго типа пользователю предоставляется либо поле для ввода, либо заготовленные виджеты, к примеру, для ввода даты, промежутков дат и т.п. Он выбирает свойство, по которому хочет добавить условие, к примеру, «Дата выхода модели» и указывает любое желаемое значение. При этом для каждого из аспектов он может указать любое количество значений. При этом есть ещё возможность инвертировать поиск по некоторым атрибутам…
В итоге все введенные условия собираются, аккумулируются и передаются на сервер.
Для каждой опции («Volkswagen», «Skoda» или «Ford») из каждого блока первого типа мы подтягиваем количество записей, подходящих именно под эту опцию и под все остальные введенные фильтры. Запрос исполняется на уровне базы, поэтому для каждой из опций приходится делать свой запрос, т.к. меняются условия. Поэтому у нас столько запросов, сколько и опций. Можно, конечно, попробовать поработать с запросом и группировкой по опции, но пока нет необходимости.
Очень надеюсь, что расписал понятно.