gpt4 book ai didi

php - 具有一对多关系的 Doctrine 2 实体

转载 作者:行者123 更新时间:2023-12-04 06:28:55 25 4
gpt4 key购买 nike

我正在尝试使用一对多关系获取注释,但是一旦我使用连接,我将得到以下数据:

entities\Topic
id = 1 // integer
title = "example" // string
comments // entities\Comment = oneToMany
id = 1 // integer
comment = "first comment" // string
topic // entities\Topic = manyToOne
id = 1 // again..
title = "example"

当我加入主题评论时,为什么学说会获取评论中的 manyToOne 关系?这是我的查询:
$this->em->createQueryBuilder()
->from('Entities\Topic', 't')
->select("t, c")
->leftjoin("t.comments", 'c')
->where('t.id = :id')
->setParameter('id', 1)
->getQuery()->getSingleResult();

主题属性不应该为空或至少是一个空的 arrayCollection 吗?

另一件事:

当我指定注释是 arrayCollection 时,为什么我将 PersistentCollection 作为注释返回?我是否总是需要在 PersistentCollection 上使用 unwrap 才能循环遍历它?

最佳答案

首先 - 它可能会填充主题,因为它已经有了数据。如果手头上没有数据,您可能会在那里有一个代理实体。它永远不会是 null,因为 null 是错误的(评论确实有一个主题)。

至于 ArrayCollection/PersistentCollection,您可以放心地忽略区别。我不知道实现细节,但基本上,EM 返回 PersistentCollections 中的东西,我假设它在管理集合中的实体方面发挥作用。如果要创建集合,请使用 ArrayCollection。抱歉,我不能在这里更具体,但最重要的是,您可能应该将您从 EM 获得的任何 PersistentCollections 视为“一个集合”

关于php - 具有一对多关系的 Doctrine 2 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5682092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com