PHP - заполнение многомерного массива результатом SQL, указание ключей для агрегирования похожих результатов - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь получить массив, который будет передаваться как JSON в угловое представление.Структура результата sql примерно такова:

  • Номер заказа
  • Поставщик
  • Кол-во
  • Дата
  • OrderState
  • ProductA (включая размер)
  • GenericA (исключая размер)
  • LibA
  • TypeA (упаковка, партия, продукт)
  • Размер A
  • SizeNameA
  • ProductB
  • GenericB
  • LibB
  • TypeB
  • SizeB
  • SizeNameB
  • QtyPerSizeB
  • ProductC
  • GenericC
  • LibC
  • TypeC
  • SizeC
  • SizeNameC
  • QtyPerSizeC

Это делается с помощью левых соединений, поэтому стоимость относится к последнему ненулевому продукту.

Если это пакет:

  • ProductA-> Упаковка
  • ProductB -> Партия (дочерний элемент A)
  • ProductC -> Продукт (дочерний элемент B)

Если это партия или пакет снет партий:

  • ProductA -> Упаковка / партия
  • ProductB -> Proвоздуховод
  • ProductC -> null

Если это только продукты:

  • ProductA -> Product
  • ProductB / C -> null

Поэтому мне нужна какая-то иерархия, чтобы я мог проходить по этим объектам.Что-то похожее на это:

{
  "order": {
    "infos": {},
    "products": {
      "name": "x",
      "type": "Package",
      "sizes": {
        "1": {
          "qty": "",
          "price": ""
        },
        "2": {
          "qty": "",
          "price": ""
        }
      },
      "children": {
        "name": "x",
        "type": "Batch",
        "sizes": {
          "1": {
            "qty": "",
            "price": ""
          },
          "2": {
            "qty": "",
            "price": ""
          }
        },
        "children": {
          "name": "x",
          "type": "Batch",
          "sizes": {
            "1": {
              "qty": "",
              "price": ""
            },
            "2": {
              "qty": "",
              "price": ""
            }
          },
        }
      }
    }
  }
}

Я попытался настроить каждый из них, просматривая все результаты, но из-за сложности, разработка / изменение / сопровождение занимает слишком много времени.

ТакМне было интересно, если есть какой-либо способ указать другой массив, содержащий ключи и инструкции (что-то вроде "parent of", "sum of", "child of"), а затем объединить результат sql в многомерный массив, который соответствует структуре выше.

Я с нетерпением жду ваших комментариев, вы, гении, и спасибо за чтение!

Raekh

1 Ответ

0 голосов
/ 19 марта 2019

Хорошо, нет ответов.Я закончил тем, что создал классы, которые описывают данные, которые я хочу.Если вам нужна подобная структура, свяжитесь со мной, и я поделюсь, как я это сделал.

...