Как вы оптимальнее фильтруете данные по многим параметрам?
А в чём проблема, зачем такие сложные ифы, в простом варианте можно обойтись простмиif ($color = \Input::get('color')) {
   $model->where('color', $color);
}
if ($size = \Input::get('color')) {
   $model->where('size', $size);
}
//....
Можно оптимизировать засунув фуильтры в массивforeach($filters as $filter) {
     if ($value = \Input::get($filter)) {
        $model->where($filter, $value);
    }
}
и т.д.
Если у вас нормальная база с EAV и фасетами, то полезно будет конструкция ::has
Почитайте доку по фреймворку, чтобы не было геммороя из-за незнания работы его конструкций, так понимаю про то, что where складыватся в and вы похоже не знали.
Ух, ивправду скрипт тяжеленький:)
Так подсказать не могу, но еслиб я использовал Mysql, то обычного WHERE ему хватилобы.