• 01-12-2022, 18:19:03
    #1
    Merhabalar. Elimde bir tablo var. category adında. id,parent_id şeklinde. Bunu json olarak tree şeklinde vermem lazım. İnternette bir çok kaynak var ama hepsi ul li gibi while döngüleri ile.

    Not: Laravel FW. kullanıyorum. Örnek:

  • 01-12-2022, 18:48:53
    #2
    Nasil bir cikti istiyorsunuz?

    return $category->with(['children' => function($query) {
    $query->children()->get();
    }])->get();
    dediginizde children/grandchildren ile beraber listelersiniz.
    Kodu calistirmadan once Category modelinde relationship fonksiyonunu yazmayi unutmayin:

    public function children()
    {
    return $this->hasMany(Category::class, 'parent_id');
    }
  • 02-12-2022, 00:57:46
    #3
    T1mSaH adlı üyeden alıntı: mesajı görüntüle
    Nasil bir cikti istiyorsunuz?

    return $category->with(['children' => function($query) {
    $query->children()->get();
    }])->get();
    dediginizde children/grandchildren ile beraber listelersiniz.
    Kodu calistirmadan once Category modelinde relationship fonksiyonunu yazmayi unutmayin:

    public function children()
    {
    return $this->hasMany(Category::class, 'parent_id');
    }
    Cevabınız için teşekkür ederim. Ancak ben bunu laravelin model sistemine bağlı kalmadan yapmak istiyorum. bu attığınız yöntem çalışıyor.
  • 02-12-2022, 11:47:05
    #4
    Üyeliği durduruldu
    Merhaba, saniyorum bu kod tam olarak istediginizi yapiyor. Bulabildigi kadar children'e iniyor.

    Models/Category.php
    /**
    * @return HasMany
    */
    public function childrenRelation(): HasMany
    {
    return $this->hasMany(Category::class, 'parent_id');
    }
    
    /**
    * @return HasMany
    */
    public function children()
    {
    return $this->childrenRelation()->with('children');
    }
    Tüm alt kategorilerle beraber almak istediginizde:
    $categories = Category::with('children')
                                   ->where('parent_id', 0)
                                   ->get();
    istediginiz gibi json almak icin $categories degiskenini controller'dan return etmeniz yeterli.
  • 02-12-2022, 17:17:56
    #5
    Remzi0068 adlı üyeden alıntı: mesajı görüntüle
    Merhaba, saniyorum bu kod tam olarak istediginizi yapiyor. Bulabildigi kadar children'e iniyor.

    Models/Category.php
    /**
    * @return HasMany
    */
    public function childrenRelation(): HasMany
    {
    return $this->hasMany(Category::class, 'parent_id');
    }
    
    /**
    * @return HasMany
    */
    public function children()
    {
    return $this->childrenRelation()->with('children');
    }
    Tüm alt kategorilerle beraber almak istediginizde:
    $categories = Category::with('children')
                                   ->where('parent_id', 0)
                                   ->get();
    istediginiz gibi json almak icin $categories degiskenini controller'dan return etmeniz yeterli.
    Teşekkür ederim hocam zaten şuan bu yapıda aldım çıktıyı ancak bunu kendim function ile yapmak istiyorum.