У меня есть 4 таблицы - food, food_categories, food_subcategories и category_to_foods.
Один и тот же элемент питания может принадлежать нескольким категориям и подкатегориям. Я не могу понять, как получить результаты в таком формате, как категории -> подкатегории -> продукты.
Кроме того, я хотел бы, чтобы в массиве продуктов были category_id и subcategory_id, а category_id - в массиве подкатегорий.
Как мне установить отношения, чтобы я мог использовать с () вот так - массив категорий с массивом подкатегорий (внутри) с массивом продуктов (внутри).
// I know this is not correct...
$categories_wiht_foods = Categories::with('subcategories.foods')->get();
categories: [
{
id: 1,
description: 'First category',
subcategories: [
{
id: 1,
description: 'First subcategory',
category_id: 1,
foods: [
{
id: 1,
description: 'Pizza',
category_id: 1,
subcategory_id: 1,
}
]
}
]
},
]
Таблица продуктов
+----+-------------+
| id | description |
+----+-------------+
| 1 | Pizza |
+----+-------------+
Таблица категорий
+----+----------------+
| id | description |
+----+----------------+
| 1 | First category |
+----+----------------+
Таблица подкатегорий
+----+-------------------+
| id | description |
+----+-------------------+
| 1 | First subcategory |
+----+-------------------+
Таблица Categories_to_foods
+----+---------+-------------+----------------+
| id | food_id | category_id | subcategory_id |
+----+---------+-------------+----------------+
| 1 | 1 | 1 | 1 |
+----+---------+-------------+----------------+
| 2 | 1 | 2 | 14 |
+----+---------+-------------+----------------+