$products = Product::available()->orderBy($sort_filed, $sort_type);;
foreach($filter as $attribute => $options) {
$products->join('product_attributes as pa' . $attribute, function ($join) use ($attribute) {
$join->on('pa' . $attribute . '.product_id', '=', 'products.id');
});
$i = 0;
foreach($options as $option) {
//$products->where(function ($products) use ($attribute, $option, $i) {
if ($i == 0) {
$products->where(function ($query) use ($attribute, $option) {
$query->where('pa' . $attribute . '.attribute_id', '=', $attribute);
$query->where('pa' . $attribute . '.attribute_option_id23', '=', $option);
});
$i++;
} else {
$products->orWhere(function ($query) use ($attribute, $option) {
$query->where('pa' . $attribute . '.attribute_id', '=', $attribute);
$query->where('pa' . $attribute . '.attribute_option_id2', '=', $option);
});
};
//});
};
};