Как смоделировать базу данных, в которой продукты имеют «n» презентаций в зависимости от «m» филиалов? Ларавель

#mysql #database #laravel #api #data-modeling

Вопрос:

У меня возникает проблема, когда я пытаюсь смоделировать базу данных и вернуть данные с помощью ресурсов laravel api.

Правила таковы:

  • Продукт принадлежит многим филиалам, и в филиале может быть много продуктов. (Отношения многих ко многим, здесь у меня нет проблем)
  • Продукт может иметь множество презентаций в зависимости от отрасли. (Вот в чем моя проблема)
  • Презентации представляют собой дополнительные столбцы к продукту, такие как количество и цена

Например:

  1. Продукт: Гамбургер
    • Филиал: Перу
      • Презентации:
        • маленький, 7 долларов
        • большой, 15 долларов
    • Филиал: Мексика
      • Презентации:
        • средний, 30 долларов
        • маленький, 10 долларов

Каким было бы моделирование в базе данных? И как я должен отображать данные с помощью ресурсов Api laravel?

Спасибо!

PD: Я прилагаю код Json, который должен быть возвращен.

  {
    "id": 1,
    "description": "Hamburguer",
    "branches": [
        {
            "id": 2,
            "name": "Peru",
            "presentations": [
                {
                    "quantity": "small",
                    "default_price": 7
                },
                {
                    "quantity": "large",
                    "default_price": 15
                }
            ]
        },
        {
            "id": 4,
            "name": "Mexico",
            "presentations": [
                {
                    "quantity": "medium",
                    "default_price": 30
                },
                {
                    "quantity": "small",
                    "default_price": 10
                }
            ]
        }
    ]
}
 

Комментарии:

1. Взгляните на Красноречивые отношения Хасмана. Как вы возвращаете эти данные в свой API, зависит от вас, вы можете следовать спецификации, такой как JSONAPI, или определить свою собственную структуру.

2. @Peppermintology Когда я использую «сквозной», он показывает все презентации продукта. Я хочу, чтобы он показывал только доступные презентации продукта в определенной отрасли.