@websolab

Как получить id всех подкатегорий из дерева категории?

Структура БД. Таблица Категорий

id | category_id | title |

Где category_id это ID категории родителя.

613fbc2977eb5873715260.png

Вот например у категории c ID 1 есть подкатегория у которой в свою очередь тоже есть подкатегория с подкатегорией.

Подскажите пожалуйста, как получить массив с ID вот такого вида:

array('1'=>array('2','3','4'));

Заранее благодарю.
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
@websolab Автор вопроса
В общем нашёл решение самостоятельно:

CONTROLLER
public function getAllCategories(){
        
        $categories = Category::whereNull('category_id')->with('children')->get();
        
        foreach($categories as $category){
            $cats[$category->id] = $this->getAllChildrenCats($category);
        }

    }

    public function getAllChildrenCats($category, $catsIds = []){

        foreach($category->children as $children){
	        
	        $catsIds[] = $children->id;
	        
	        if($children->children){
		        $catsIds = $this->getAllChildrenCats($children, $catsIds);
	        }
	        
        }
                
        return $catsIds; 
	
    }

MODEL
public function children() {
        return $this->hasMany(Category::class, 'category_id')
          			->with('children');
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы