Shlop
@Shlop
Full Stack Developer (PHP/Laravel/JavaScript)

Можно ли уменьшить количество запросов к базе при получении дерева категорий?

Здравствуйте, подскажите пожалуйста, вложенность категорий обеспечивает в базе ключ - parent_id,
модель содержит такой вот метод:
public function childrenCategories()
{
   return $this->hasMany('App\Models\Admin\Category','parent_id');
}

Нужно построить дерево категорий получаю категорию вот так:
$category = Category::with('childrenCategories')->find($request->input('id'));

А потом вывожу вот так через рекурсию:
public static function formatCategoryTree($inputData)
    {
        $response = [];
        foreach ($inputData as $category) {
            $response[] = [
                'id' => $category->id,
                'name' => $category->name,
                'children' => ($category->childrenCategories->isNotEmpty()) ?
                    FormattingCategory::formatCategoryTree($category->childrenCategories) : [],
            ];
        }
        return $response;
    }

И для одной из категорий получается 18 запросов к бд, я так понимаю чем будет глубже вложенность тем больше запросов будет к бд, подскажите пожалуйста как можно уменьшить количество запросов, заранее благодарю за ответ.
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
New_Horizons
@New_Horizons
Бред:
Попробуй посмотреть в сторону Nested Set и этой либы
https://packagist.org/packages/kalnoy/nestedset
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы