Как я могу получить доступ к свойствам объекта (arraycollection)? - PullRequest
0 голосов
/ 07 января 2019

Это мой объект products:

array:1 [▼
  0 => Products {#8662 ▼
    -id: 5
    -name: "lion"
    -unique_id: "7726d59574"
    -productgroup: PersistentCollection {#8763 ▼
      -snapshot: array:2 [ …2]
      -owner: Products {#8662}
      -association: array:20 [ …20]
      -em: EntityManager {#4326 …11}
      -backRefFieldName: null
      -typeClass: ClassMetadata {#8294 …}
      -isDirty: false
      #collection: ArrayCollection {#8666 ▼
        -elements: array:2 [▼
          0 => Productgroup {#8765 ▼
            -id: 5
            -name: "Mammals"
            -unique_id: "12102400f9"
          }
          1 => Productgroup {#8769 ▼
            -id: 7
            -name: "Fish"
            -unique_id: "f0fbfa5c19"
          }
        ]
      }
      #initialized: true
    }
  }
]

Когда я создаю файл json, как этот ...

$result = $serializer->serialize($products, 'json');

... Я получаю этот результат:

[{"id":5,"uniqueId":"7726d59574","name":"lion","productgroup":[{"id":5,"uniqueId":"12102400f9","name":"Mammals"},{"id":7,"uniqueId":"f0fbfa5c19","name":"Fish"}]}]

Но результат, который мне нужен, это только группа товаров. Вот чего я пытаюсь достичь:

[{"id":5,"uniqueId":"12102400f9","name":"Mammals"},{"id":7,"uniqueId":"f0fbfa5c19","name":"Fish"}]

Это был мой первый подход:

$data = $products->productgroup;
$result = $serializer->serialize($data, 'json');

Но я получил сообщение об ошибке:

Примечание: попытка получить свойство 'productgroup' для необъекта

Я подумал, ну ладно, это значит, products не объект, поэтому я попробовал это:

foreach ($products as $product) {
    $data = $product['productgroup'];
}
$result = $serializer->serialize($data, 'json');

Но теперь я получаю ошибку:

Невозможно использовать объект типа App \ Entity \ Products в качестве массива

1 Ответ

0 голосов
/ 07 января 2019

попробуйте использовать что-то вроде этого:

foreach ($products as $product) {
    $data = $product->getProductGroup();
}

Метод getProductGroup должен существовать в вашей сущности, если не у вас может быть что-то похожее, я думаю.

...