​ör:filitreden renk seçtiler

?variant_tipi=product_option&variant_tipi=product_ option
- variant_tipi renk olsun diyelim renk in slug benzersiz değer yapalım ona --- filitreden seçilen renk in id sini alalım
?renk_slug=kırmızı
?renk=1

olarak get ile sorgu gönderebilirsin
controller den sorgu yaptığın yerde ise get ile gelen verileri süzdürebilirsin

$filitre = array('renk',)// filitreden gelen sadece bu değerleri where yapsın diye koruma
foreach ($filitre as $key => $value) {
  if(isset($option)){
       $option = ProductOption:where($value, $_GET[$value]); 
    }else{
    if(isset($_GET[$value])){
       $option->where($value, $_GET[$value]);
    }
  }
}
$gelen_option = $option->get();

foreach($gelen_optionas as $produc){
$produc_ids[] =  $produc['ProductID']
}
burada filitrelere uyan ürünlerin id lerini elde ettik gelen id leri ürünler tablosunda wherein ile sorgutalım

  $urunler = Product:whereIn($id,$produc_ids)->get();
yazdıklarınızdan anladığım kadar aklımda kurduğum mantık

filitrelerin id lerini ortak tabloda aratarak gelen ürünlerin id lerinide ürünler tablosundan whereIn ile aratın