gpt4 book ai didi

php - Symfony2 : Doctrine does not load related entities in many-to-many relation

转载 作者:可可西里 更新时间:2023-11-01 12:51:22 25 4
gpt4 key购买 nike

我有一个多对多关系,当我加载位于此关系一侧的实体时,我希望将另一侧相关实体的 ArrayCollection 视为其属性。然而,这并没有发生——加载的 ArrayCollection 中没有任何元素,而在数据库中我可以看到相关条目。可能是什么原因?

这是我的代码:
关系的一侧,ConsolidatedReport 类:

/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="P24\Response", inversedBy="consolidatedReports")
* @ORM\JoinTable(name="con_rprt_responses")
*/
private $responses;

关系的另一面,响应类:

/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="P24\ConsolidatedReport\ConsolidatedReport", mappedBy="responses")
*/
private $consolidatedReports;

这是我为获取 ConsolidatedReport 实例而运行的函数。此函数位于从容器调用的服务中:

/**
* Picks the consolidated report with given id.
*
* @param string $id
*
* @return ConsolidatedReport
*
* @throws NonExistentConsolidatedReportException if the survey doesn't exist
*/
public function pick($id)
{
$report = $this->repository->findOneBy(array('id' => $id));

if (!$report) {
throw new NonExistentConsolidatedReportException($id);
}

return $report;
}'

在数据库中,有一个包含两列“consolidated_reports_id”和“response_id”的“con_rprt_responses”表。但是,在探查器中我没有看到对该表的任何查询。

这里会出什么问题?

更新:请在下面查看我对这个问题的回答,这对我有用。

最佳答案

我将 fetch="EAGER" 添加到 ConsolidatedReport 类的 $responses 属性中,它起作用了。

代码现在看起来像这样:

/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="P24\Response", inversedBy="consolidatedReports", fetch="EAGER")
* @ORM\JoinTable(name="con_rprt_responses")
*/
private $responses;

更多信息在这里: http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-objects.html#by-eager-loading

如果有人知道为什么在没有明确指定 EAGER 提取的情况下不会加载相关实体的集合 - 请分享您的知识,我们将不胜感激!

关于php - Symfony2 : Doctrine does not load related entities in many-to-many relation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32236128/

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