Laravel красноречив с категориями ⇐ Php

Кемеровские программисты php общаются здесь
Anonymous
Laravel красноречив с категориями

Сообщение Anonymous »

У меня вопрос по поводу eloquent в laravel.

Таблицы БД


категории: идентификатор root_id, имя

идентификатор продукта, имя и т. д.

product_categories id product_id Category_id


Таким образом, это может быть Категория A, у которой есть дочерняя Категория B, а у Категории B сама по себе есть дочерняя Категория C.

Когда я нажимаю «Категорию А», я хочу найти все продукты, входящие в категории «А», «Категория Б», «Категория В».

Код: Выделить всё

Category Model

public function cats()
{
return $this->hasMany(Category::class);
}

public function childrenCategories()
{
return $this->hasMany(Category::class)->with('cats');
}
Модель продукта

Код: Выделить всё

public function categories()
{
return $this->belongsToMany(Category::class);
}
Контроллер

//Сначала я получаю все идентификаторы всех категорий, подкатегорий всех уровней.

Код: Выделить всё

        $categories = Category::where('category_id',$category_id)->with('childrenCategories')->get();
$all_cat_array=array();$all_prod=array();

foreach ($categories as $category)
{
foreach ($category->childrenCategories as $childCategory) {
array_push($all_cat_array, $childCategory->id);
}
array_push($all_cat_array,$category->id);

}
//затем я получаю все идентификаторы продуктов

Код: Выделить всё

foreach ($all_cat_array as $cat)
{
if(CategoryProduct::where('category_id',$cat)->exists()) {
$prod=CategoryProduct::where('category_id',$cat)->pluck('product_id');
array_push($all_prod,$prod );
}
}
Но я не хочу использовать все эти foreach, так как хочу оптимизировать код.
Что я могу сделать, чтобы сделать его проще?? ?

Подробнее здесь: https://stackoverflow.com/questions/579 ... categories

Вернуться в «Php»