Tam mantığı kuramadım ama Eloquent ile yaptığında kullanacağın yöntemler şunlar oluyor. Basit bir örnek vereyim, hatalı olabilir ama belki yardımcı olur.

Product::with('variants', 'options')->when(request('variant') && request('option'), function($query){
  return $query->whereHas('variants', function($query){
    // ..
  });
});
with metodu ile ürüne ait varyant ve seçenekleri alıp, when metodu ile eğer querystring de variant veya option varsa whereHas metodu ile (böyle olmayabilir de) işlem yapabilirsin.

Çok benzemese de koşullu sorguları çözmek için bir yazı yazmıştım belki yardımcı olabilir: https://yilmazdemir.com.tr/eloquent-...sullu-sorgular