А в чём проблема, зачем такие сложные ифы, в простом варианте можно обойтись простми
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 вы похоже не знали.