Как использовать сводную таблицу в Laravel, чтобы объединить 3 таблицы? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть 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             |
+----+---------+-------------+----------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...