Hocam tekrar teşekkürler.
Konuyu mümkün mertebe özetleştirip burda sordum sorumu. O konudaki problemi çözersem olayım kısmen tamamdır.
E-ticaret sitelerinde filtreleme nasıl yapılıyor ?
12
●1.746
- 15-08-2022, 15:33:29problemin çözümü sunulmamış ama OOP ile yapmış olduğum ihtiyacı olan arkadaşlar için lazım olur kaynak kodlar aşağıda anlamadığınız yer olursa özel mesaj atabilirsniz.
/*** * @param array $request * @param array $search * @return void * * mağaza sayfasında kategori filtrelemesini yapmak için iki parametre isteyen private bir fonksiyon * * * $request = $urunleri array şeklinde gönderdiğimiz bir parametre isteyior * $search = get methodundaki kategori alanını baz alarak istenilen alanı yazdığımız array isteyn bir parametre * return = geri bize filtreleme sonucu eşleşen verileri geri return ediyor * * */ private function category(array $request, array $search) { $urunler =array(); foreach ($request as $u=>$r) { foreach($search as $index=>$s) { $kat =//kategorileri listeliyoruz if($kat == $r||$kat==$r||$kat==$r) { $ekle = array($request); array_push($urunler,$request); } } } } /** * @param array $request * @param array $search * @return array * * mağaza sayfası size alanı için filtreleme alanı array olarak değer ister ve array olarak dışarı değer gönderiri * * $reques = urunleri lisltelemek için ürünleri array şeklinde ister * * $search = filtrelenecek parametreleri filtrelemek için array olarak ister * * return = filreleme sonucu eşleşen ürünleri geri döndürür * * */ private function size(array $request,array $search) { $urunler =array(); foreach ($request as $u=>$r) { foreach($search as $index=>$s) { $beden =//varyan tablosunu listeliyorsunuz beden parametresine atıyoruz foreach ($beden as $b) { if($b["valuebir"]==$s||$b["valueiki"]==$s) { $ekle = array($request); array_push($urunler,$request); } } } } return $urunler; } - 15-08-2022, 15:51:391. kategori_ozellikleri isimli bir tablo oluşturacaksın (id, kategori_id, baslik)
2. karegori_ozellikleri_karsilik isimli bir tablo oluşturacaksın (id,ozellik_id,baslik)
3. urun_ozellik tablosu oluşturacaksın (id,urun_id,karsilik_id)
ürünü eklerken hangi kategoride ise 1 numaralı tablodan o özellikleri ve karşılıklarını checkbox olarak getirip seçtireceksin.
kategori sayfanda o kategoriye ait özellikleri sol tarafa getirip seçtirip post edeceksin.
daha sonra sql sorgusu ile filtre yapacaksın örnek:
select * from urunler u INNER JOIN urun_ozellik uo ON uo.urun_id=u.id WHERE uo.karsilik_id IN (karslik_id_1,karslik_id_2,karslik_id_3 )
Bu sorgu tek başına çalışmaz birde having yapman lazım
$kac = $heaving-1 (filtrelemeden kaç özellik seçtirdiysen o kadar -1 );
$sorgu .=" HAVING COUNT(uo.urun_id)>$kac ";
Bu kadar kolay gelsin. - 15-08-2022, 16:56:00veritabani yapisi icin surada guzel bir ornek var; https://laravel.gen.tr/d/3176-urun-v...nin-olusumu/42
ayrica laravelin eloquenti gibi bir yardimci olmadan bu iliskilerin icinden cikmak cok kolay degil. yapilabilir, ancak olceklenebilirlik dezavantajiyla birlikte fazlasiyla yorucu. kolay gelsin.