OnurTasci adlı üyeden alıntı: mesajı görüntüle
ö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
Buna benzer bir yapı kurdum, şuan deniyorum. Kafamı çok karıştırdı. Denemeden sonra sizin anlattığınız şekilde de deneyeceğim. Başarılı olursam buradan yeniden paylaşacağım. Teşekkür ilginiz için



yidemir adlı üyeden alıntı: mesajı görüntüle
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

OnurTasci adlı üyeden alıntı: mesajı görüntüle
ö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
Normalde verileri buna benzer bir şekilde alıyorum ama ürün ve categoriler birden fazla olduğu için problem çıkarıyor. Şuan deniyorum.