• 03-11-2021, 04:12:44
    #1
    Üyeliği durduruldu
    Merhaba, herkese iyi günler dilerim. Forumlardan araştırarak elde ettiğim bir kategori sistemi bulunmakta. Yalnız bu kategori sistemi yaklaşık 520 adet veritabanı sorgusu yapmakta. Bu sorunu sizce nasıl çözebilirim? Kodlar;
    Model;
    protected $appends = [        'getParentsTree',    ];     public function children()    {        return $this->hasMany(Category::class, 'parent_id')->orderBy('id', 'ASC');    }    public static function getParentsTree($category, $title)    {        if ($category->parent_id == 0) {            return $title;        }        $parent = Category::findOrFail($category->parent_id);        $title = $parent->title . ' > ' . $title;         return Category::getParentsTree($parent, $title);    }
    View’e aktarım;
    view()->share('categorys', Category::where('parent_id', 0)->with('children')->orderBy('id', 'ASC')->get());
    View;
    @foreach ($categorys as $category)    @if (count($category->children))    <li>        <ul class="dropdown-c">            <li>                <a class="cwCategoryFontSize85" href="{{ route('Web.category.products', $category->slug) }}">{{ $category->title }}</a>                <ul>                    @include('Web.Category.category', ['children'=>$category->children])                </ul>            </li>        </ul>        @else        <ul class="dropdown-c">            <li>                <a class="cwCategoryFontSize85" href="{{ route('Web.category.products', $category->slug) }}">{{ $category->title }}</a>            </li>        </ul>    @endif @endforeach
    Web.Category.category;
    @foreach ($children as $item)        @if (count($item->children))            <li>                <a href="{{ route('Web.category.products', $item->slug) }}">{{ $item->title }} <i class="fi-rs-angle-right"></i></a>                <ul class="level-menu level-menu-modify">                    @include('Web.Category.category', ['children'=>$item->children])                </ul>            </li>        @else            <li><a href="{{ route('Web.category.products', $item->slug) }}">{{ $item->title }}</a></li>        @endif @endforeach
    Kodları doğru bir şekilde yerleştiremedim özür dilerim. Yardım eden herkese şimdiden çok teşekkür ederim
  • 03-11-2021, 04:28:23
    #2
    Reveloper
    Cache::remember bunu araştır çok basit tek sorgu ile halledersin

    $value = Cache::remember('users', $seconds, function () {
    return DB::table('users')->get();
    });
  • 03-11-2021, 04:30:32
    #3
    Üyeliği durduruldu
    Burti;[URL="tel:1081290819" adlı üyeden alıntı:
    1081290819[/URL]]Cache::remember bunu araştır çok basit tek sorgu ile halledersin
    Hocam dediğiniz 1-2 saat öncesine kadar araştırıp denedim ama olumlu sonuçlanmadı. Önereceğiniz kaynak var mı?
  • 03-11-2021, 04:32:25
    #4
    Reveloper
    canseworks adlı üyeden alıntı: mesajı görüntüle
    Hocam dediğiniz 1-2 saat öncesine kadar araştırıp denedim ama olumlu sonuçlanmadı. Önereceğiniz kaynak var mı?
    mobilim tam göremiyorum kodları ama sen modelden append ediyorsun. İhtiyacın olduğu yerde controllerdan çekip cache tut. Appends e ekleme değeri controller içerisinde with ile çekebilirsin ek değerleride misalen Users::with(‘groups’)->get(); yapıp cache içinde al bunu
  • 03-11-2021, 04:35:42
    #5
    Üyeliği durduruldu
    Burti;[URL="tel:1081290824" adlı üyeden alıntı:
    1081290824[/URL]]mobilim tam göremiyorum kodları ama sen modelden append ediyorsun. İhtiyacın olduğu yerde controllerdan çekip cache tut. Appends e ekleme değeri controller içerisinde with ile çekebilirsin ek değerleride misalen Users::with(‘groups’)->get(); yapıp cache içinde al bunu
    Hocam sayfanın header kısmında çalışıyor yani her sayfada çalışacak ve mobil menü de ayrıyeten hazırlanmış yani 2 ayrı yerde çalıştırmam gerekiyor. Dediklerinizi denedim ama bir sonuca ulaşamadım 😕
  • 03-11-2021, 05:32:45
    #6
    Reveloper
    canseworks adlı üyeden alıntı: mesajı görüntüle
    Hocam sayfanın header kısmında çalışıyor yani her sayfada çalışacak ve mobil menü de ayrıyeten hazırlanmış yani 2 ayrı yerde çalıştırmam gerekiyor. Dediklerinizi denedim ama bir sonuca ulaşamadım 😕
    e daha iyi kernelde view::share yapacaksın. Oradada cache alacaksın her sayfada kullanırsın
  • 03-11-2021, 12:37:26
    #7
    Üyeliği durduruldu
    Burti;[URL="tel:1081290880" adlı üyeden alıntı:
    1081290880[/URL]]e daha iyi kernelde view::share yapacaksın. Oradada cache alacaksın her sayfada kullanırsın
    Hocam kendi providerimi oluşturup orada view share ile paylaşıyorum cache ile ayarladım ama sonuç aynı
  • 03-11-2021, 12:44:22
    #8
    fonksiyonu YouTube da bir hocamız paylaşmıştı. Yazdığın fonksiyon bu video da kullanılıyor.


    https://youtu.be/UDZXjZMXj0k




    Bende alternatif iki video daha paylaşayım.

    https://youtu.be/g6A_4_yuB-A


    https://youtu.be/hFxR6D2kH44


    bu sınırsız altkategori olayına bu yapılan işlemlere recursive fonksiyon denir. Php recursive functions veya laravel recursive functions diye aratırsan daha fazla kaynak bulabilirsin. İyi çalışmalar dilerim.
  • 03-11-2021, 12:57:33
    #9
    Üyeliği durduruldu
    blap;[URL="tel:1081291941" adlı üyeden alıntı:
    1081291941[/URL]]fonksiyonu YouTube da bir hocamız paylaşmıştı. Yazdığın fonksiyon bu video da kullanılıyor.


    https://youtu.be/UDZXjZMXj0k




    Bende alternatif iki video daha paylaşayım.

    https://youtu.be/g6A_4_yuB-A


    https://youtu.be/hFxR6D2kH44


    bu sınırsız altkategori olayına bu yapılan işlemlere recursive fonksiyon denir. Php recursive functions veya laravel recursive functions diye aratırsan daha fazla kaynak bulabilirsin. İyi çalışmalar dilerim.
    Teşekkürler hocam.