Dzień dobry, mam pewien problem, chciałem zrobić jedno poziomowe menu i przypisywać do odpowiednich subkategorii i kategorii produkty, celem optymalizacji i nauki, chcę mieć możliwość wypisywania wszystkiego jednym zapytaniem czyli:
Categoria1
Subcategoria1
produkt1
produkt2
produkt3
Categoria2
Subcategoria1
produkt4
produkt5
Subcategoria3
produkt6
Teraz nieco opiszę w jaki sposób zrobiłem tabele i relacje
Category i subcategory jest many to many (category_subcategory) a w tabeli produkt odwołuje się do tabeli category_subcategory i mam relację do niego w polu category_subcategory_id.
category
id
name
subcategory
id
name
category_subcategory
id
category_id
subcategory_id
item
id
name
category_subcategory_id.
Teraz nieco kodu w jaki sposób wykonuję relacje w modelach.
class Subcategory extends Model
{
protected $fillable = [
'id',
'name',
];
protected $table = 'subcategories';
public function categories()
{
return $this->belongsToMany(CategoriesTwoLevel::class, 'categories_subcategories', 'subcategories_id','categories_id');
}
}
class Categories extends Model
{
protected $fillable = [
'id',
'name',
];
protected $table = 'categories';
protected $timestamp = false;
public function subcategory()
{
return $this->belongsToMany(Subcategory::class, 'categories_subcategories', 'categories_id', 'subcategories_id')->withPivot('id');
}
}
Za pomocą tego zapytania wyciągam odpowiednio dane z tabel category i subcategory
CategoriesTwoLevel::with('subcategory')->get();
Problem jest taki że nie widzę możliwość odwołania się do tabeli item poprzez to zapytanie, być może jest coś nie tak z relacjami i powinny być wykonane inaczej, mimo najszczerszych chęci utknąłem.