Вам не нужно зависеть от пакетов для реализации этого.
Вы можете создать свою таблицу categories
следующим образом:
|----------|------------|---------------|
| id | name | category_id |
|----------|------------|---------------|
Здесь category_id
- это обнуляемое поле и внешний ключ со ссылкой на id
таблицы categories
.
Для категории category_id
поле будет NULL
, а для подкатегории category_id
будет его идентификатор родительской категории. Для подкатегории category_id
будет идентификатором родительской подкатегории.
В модели вы можете написать отношение следующим образом:
category.php
/**
* Get the sub categories for the category.
*/
public function categories()
{
return $this->hasMany(Category::class);
}
Теперь вы можете получить свои подкатегории, такие как $category->categories
.
N.B .: Вам не нужен стол subcategory
, только один стол выполнит работу.
Обновление - Показать категории продуктов
Обновление Category.php
:
/**
* Get the parent category that owns the category.
*/
public function parent()
{
return $this->belongsTo(Category::class);
}
В Product.php
:
/**
* Get the category that owns the product.
*/
public function category()
{
return $this->belongsTo(Category::class);
}
Теперь вам нужно получить категорию товара и всех его родителей. Это будет множество категорий от родителей к ребенку. Тогда вы можете показать, как вы хотите.
$category = $product->category;
$categories = [$category];
while (!is_null($category) && !is_null($category = $category->parent)) {
$categories.unshift($category);
}
// $categories = ['parent category', 'sub category', 'sub sub category' ..]
Показывать заголовок категории последовательно
foreach ($categories as $category) {
echo $category->title . '<br>';
}