【问题标题】:How can I get access to object properties (arraycollection)?如何访问对象属性(arraycollection)?
【发布时间】:2019-06-02 08:47:43
【问题描述】:

这是我的对象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 类型的对象用作数组

【问题讨论】:

    标签: php arrays json symfony object


    【解决方案1】:

    尝试使用这样的东西:

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

    方法getProductGroup 必须存在于您的实体中,如果没有,我认为您可以拥有类似的东西。

    【讨论】:

    • 很高兴为您提供帮助,记得接受答案以帮助其他开发人员解决您同样的问题@marila
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-05
    • 2020-02-11
    • 2019-09-25
    • 2011-06-15
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多