如何从我的ArrayCollection中获取数据?

问题描述 投票:-1回答:1

我正试图通过doctrine从我的数组集合中加载数据。

 $pages = $this->em->getRepository(Pages::class)->findAll();

结果是:

2 => Pages^ {#1598 ▼
-id: 3
-name: "cat"
-membergroup: PersistentCollection^ {#1603 ▼
  -snapshot: []
  -owner: Pages^ {#1598}
  -association: array:16 [ …16]
  -em: EntityManager^ {#278 …11}
  -backRefFieldName: "pages"
  -typeClass: ClassMetadata {#693 …}
  -isDirty: false
  #collection: ArrayCollection^ {#1604 ▼
    -elements: []
  }
  #initialized: false
}

}

问题是,我希望成员组ArrayCollection中有一个元素。但它是空的。

php symfony doctrine arraycollection
1个回答
5
投票

这与教义学的运作方式有关。如果你使用findAll(),你的集合将被懒惰加载。如果你试着在集合上迭代并访问元素,你会发现它不是空的!

然而,懒惰加载的集合往往不是一个好主意,因为它会导致大量的SQL查询。有几种方法可以解决这个问题,但这与问题无关。例如,你可以在仓库中自己做查询来避免这种情况。

这就是所谓的N+1问题,它是所有ORM的共同问题。

© www.soinside.com 2019 - 2024. All rights reserved.