Я хочу получить продукты дочерней категории, когда я нажимаю на любую ссылку родительской категории, сейчас мои отношения работают правильно для отдельной категории,
Моя структура таблицы выглядит следующим образом:
Продукт:
Категория:
Product_categories:
Я создал функцию для этого в контроллере:
public function show($categorySlug, $subcategorySlug=null)
{
$category = $this->categoryRepository->findBySlug($categorySlug);
$child_categories=$this->categoryRepository->getChildCategories($category->id);
if($child_categories->childrenProdut->count()==0)
{
$category=$category;
}
else{
$category=$child_categories->childrenProdut;
}
return view('site.pages.category', compact('category','child_categories'));
}
Категория Модель:
public function children()
{
return $this->hasMany(Category::class, 'parent_id');
}
public function childrenProdut()
{
return $this->hasMany(Category::class, 'parent_id');
}
public function products()
{
return $this->belongsToMany(Product::class, 'product_categories', 'category_id', 'product_id');
}
Просмотр:
Я получаю данные о категории и продукте, используя следующие утверждение:
@forelse($category->products as $product)
Основная проблема:
Для одной категории я получаю данные, т.е. продукты этой категории, используя следующее:
public function findBySlug($slug)
{
return Category::with('products')
->where('slug', $slug)
->where('menu', 1)
->first();
}
, но у меня есть манипулировал кодом для дочерних категорий
public function getChildCategories($id)
{
return Category::with('children','products')->find($id);
}
, но я не получаю все дочерние категории, но не получаю сопутствующие товары. Как видно из приведенного ниже изображения, массив продуктов пуст, существует некоторая проблема с отношениями. Пожалуйста, помогите решить.
Выход: