• 19-07-2017, 17:17:07
    #10
    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.
  • 15-08-2022, 15:33:29
    #11
    problemin çö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:39
    #12
    1. 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:00
    #13
    veritabani yapisi icin surada guzel bir ornek var; https://laravel.gen.tr/d/3176-urun-v...nin-olusumu/42

    ayrica laravel’in eloquent’i gibi bir yardimci olmadan bu iliskilerin icinden cikmak cok kolay degil. yapilabilir, ancak olceklenebilirlik dezavantajiyla birlikte fazlasiyla yorucu. kolay gelsin.