Merhabalar Bu konuya benzer daha önce bir sorum daha olmuştu .. sonra tablo yapısını değiştirip (srogulaması daha basit ) hale getirdim fakat sanırım halen ya mantıgı anlamadım ya da yapı hala yanlıs
->Varyantlar (variants) ,Varyant Değerleri (variant_attributes ) tablolarım var .. amacım kullanıcının sectiği filtreleme değerlerine göre örn
Numara (Attribute_id : 1)->36 Numara 38 ,40 Numara (Value _id ,25 26,27) ve
Renk (Attribute_id 2)->Sarı Yeşil Mavi(Value_id 51 ,53,54 )
Seçtiğinde Jquery ile Su skilde Bir Dizi alıyorum
array:2 [
0 => array:2 [
"attribute_id" => "1"
"value_id" => array:3 [
0 => "25"
1 => "26"
2 => "27"
]
]
1 => array:2 [
"attribute_id" => "2"
"value_id" => array:3 [
0 => "51"
1 => "53"
2 => "54"
]
]
]
variant_attributes tablosundaki Kolonlarım ise
variant_id
attribute_id
value_id
Controller tarafında deneğim sorgu ise su sekilde ;
public function filterVariantByAttribute(Request $request){
$searchResult =[];
$attribute_name_and_values = $request->attribute_name_and_values;
foreach ($attribute_name_and_values as $attribute_name_and_value ){
$variants = Variant::whereHas('attributes',function ($variantQuery)use($attribute_name_and_value){
$variantQuery->where('attribute_id',$attribute_name_and_value["attribute_id"])->whereIn('value_id',[$attribute_name_and_value["value_id"]]);
})->get();
array_push($searchResult,$variants);
}
dd($searchResult);
}
Şeklinde ama istediğim sonucu vermiyor .. (Sadece 1 Varyasyon listeleniyor )
İstedğim Sonuc İse Sarı veya Yeşil veya Mavi , 36,38,40 numara varyasyonlar
Doğru bir yaklasım mı ondan da emin değilim .. Şimdiden Cok Tesekkür ederim
-