Таблицы БД
категории: идентификатор 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 );
}
}
Что я могу сделать, чтобы сделать его проще?? ?
Подробнее здесь: https://stackoverflow.com/questions/579 ... categories
Мобильная версия